肥宅钓鱼网
当前位置: 首页 钓鱼百科

php教程新手入门零基础交流(小白教你PHP基础)

时间:2023-07-17 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

本文章为连载文章建议先阅读前篇文章:小白教你PHP由于时间问题,今天就不做回顾了,我们接着往下讲。dechex:结果返回的是该数字的16进制数字形式的字符串!!!对于输入的字符串中的字符,如果不是对应进制的数字,会被忽略。一个思考题:将8进制字符串”12345”,转换为2进制结果,怎么做?举例:有一个8进制数字123,则其实际大小为:1*822*813*80=64163=83;16进制转换10进制:将16进制数字的每个位上的数字乘以其对应位上的权值,然后相加之后的结果。

本文章为连载文章

建议先阅读前篇文章:小白教你PHP

由于时间问题,今天就不做回顾了,我们接着往下讲。

常量

常量是相对于变量来说的:是一个其中存储的数据不会也不应该改变的“标识符”。

常量的使用,就2个方面:定义,取值。

常量的定义:

常量的使用——取值:

也有两种形式:直接使用名字,或通过constant()函数取得其值;

常量变量的区别

定义形式不同:

使用一个未定义的常量:

先看2个对比代码:

echo “v1的值为” . $v1; //注意,该变量v1未定义过

echo “C1的值为” . C1; //注意,该常量C1未定义过

注意:在php中,当使用一个未定义的常量的时候,系统会直接将该常量当做“有值”的常量去使用,并且其值就是该常量名——虽然也会报错!

预定义常量

就是系统中预先定义好的一些常量,大约有几百个,我们只要知道几个就行:

M_PI: 就是圆周率的常量值;

PHP_OS: 就是php运行所在的操作系统

PHP_VERSION:就是php的版本号

PHP_INT_MAX: php中的最大的整数值

......更多可参考:php手册>附录>保留字列表>预定义常量

魔术常量

其实只是常量的形式,但没有常量的“恒常”的含义:其值其实会变化的,只有很少的几个:

__FILE__ :代表当前网页文件的完整物理路径

__DIR__ :代表当前网页文件所在的文件夹

__LINE__ :代表当前这个常量名所在的”行号”

数据类型

总体划分

有8种数据类型:

基本类型(标量类型):

整数类型: int, integer

浮点数类型: float,double, real

字符串类型: string

布尔类型: bool, boolean 这种类型,只有2个数据:true,false

复合类型:

数组: array

对象: object

特殊类型

空类型: null 这种类型中,只有一个数据,那就是null

资源类型: resource

整数类型

整数类型的4种写法:

$n1 = 123; //10进制数字写法

$n2 = 0123; //8进制数字写法,实际n2中存储的数字比123小

$n3 = 0x123; //16进制数字写法,实际n3中存储的数字比123大

$n4 = 0b1010; //2进制数字写法(目前不学)

进制转换问题

首先记住这几个单词:

bin:2进制

oct:8进制

dec:10进制

hex:16进制

进制转换主要分2种情况:

1,10进制转换为其他3种进制:decbin(), decoct(), dechex();

2,其他3种进制,转换为10进制:

进制转换的系统函数——必须会用

进制转换主要分2种情况:

1,10进制转换为其他3中进制:

decbin(一个10进制数字): 结果返回的是该数字的2进制数字形式的字符串!!!

decoct(一个10进制数字): 结果返回的是该数字的8进制数字形式的字符串!!!

dechex(一个10进制数字): 结果返回的是该数字的16进制数字形式的字符串!!!

2,其他3种进制,转换为10进制:

bindec(一个2进制数字字符串): 结果返回的是该2进制数字字符串对应的10进制数字!!!

octdec(一个8进制数字字符串): 结果返回的是该8进制数字字符串对应的10进制数字!!!

hexdec(一个16进制数字字符串): 结果返回的是该16进制数字字符串对应的10进制数字!!!

对于输入的字符串中的字符,如果不是对应进制的数字,会被忽略。

那么,有没有这个转换呢?hexbin()???? ——没有!

一个思考题:

将8进制字符串”12345”,转换为2进制结果,怎么做?

$v1 = octdec(“12345”); //此时,v1是10进制数字

$result = decbin( $v1 ); //此时,就是结果:为2进制数字字符串!

补充进制基础知识:

10进制1234567891011121314151617
8进制123456710111213141516172021
16进制123456789ABCDEF1011
2进制11011100101110111100010011010101111001101111011111000010001
2021222324
124816

一个课后题:

$v1 = 0x123; //它的实际大小其实是:291

$result = octdec( $v1 ); //结果为:17,怎么理解?推理如下:

1,octdec( $v1 )

2,octdec(291) //因为$v1的实际值就是291

3,octdec(“291”); //因为octdec()函数要求输入一个字符串,这属于自动转换

4,octdec(“21”); //因为octdec()函数要求输入一个8进制数字字符串,而9不是合法的数字,忽略掉

5,结果,8进制数字”21”转换为10进制就是就是17;

进制转换的人工计算——了解其原理

10进制转换为2进制:

做法:除2取余倒着写出所有余数,就是对应的2进制数字形式;

详细解释:将一个10进制数字除以2,得到商和余数,如果商还大于等于2,则继续除以2,继续得到商和余数,以此类推,直到商为0为止,然后将前面的所有余数按倒序写出来就是对应的2进制数字。

10进制转换为8进制:

做法:除8取余倒着写出所有余数,就是对应的8进制数字形式;

详细解释:将一个10进制数字除以8,得到商和余数,如果商还大于等于8,则继续除以8,继续得到商和余数,以此类推,直到商为0为止,然后将前面的所有余数按倒序写出来就是对应的8进制数字。

10进制转换为16进制:

做法:除16取余倒着写出所有余数,就是对应的16进制数字形式;

详细解释:将一个10进制数字除以16,得到商和余数,如果商还大于等于16,则继续除以16,继续得到商和余数,以此类推,直到商为0为止,然后将前面的所有余数按倒序写出来就是对应的16进制数字。

其他进制转换为10进制的做法:

先看一种对数字大小和“数字权值”的理解:

对一个10进制数字: 1234,可以这样去理解它的大小:

1234 = 1*1032*1023*1014*100 = 1000200304; (任何数的0次方都是1)

这里,我们对103 , 102, 101, 100 等等,称为“权值”;每个位的权值是不同的。

对于10进制,每个位上的权值,就是10 的 n次方;

对于8进制,每个位上的权值,就是8的 n次方;

对于16进制,每个位上的权值,就是16 的 n次方;

对于2进制,每个位上的权值,就是2 的 n次方;

8进制转换10进制:

将8进制数字的每个位上的数字乘以其对应位上的权值,然后相加之后的结果。

举例:有一个8进制数字123,则其实际大小为:

1 * 822 * 813 * 80 = 64163 = 83;

16进制转换10进制:

将16进制数字的每个位上的数字乘以其对应位上的权值,然后相加之后的结果。

举例:有一个16进制数字123,则其实际大小为:

1 * 1622 * 1613 * 160 = 256323 = 291;

2进制转换10进制:

将2进制数字的每个位上的数字乘以其对应位上的权值,然后相加之后的结果。

举例:有一个2进制数字101011,则其实际大小为:

1 * 250 * 241 * 230 * 221 * 211 * 20= 3208021 = 43;

浮点类型

浮点数的2种表示形式

1, 常规写法:带小数点。

$v1 = 123.456;

2, 科学计数法:带一个特殊符号“E”

$v1 = 123.456E2; //含义为:123.456乘以10的2次方;

$v2 = 123.456E3; //含义为:123.456乘以10的3次方,虽然结果是123456,但仍然是“浮点型”

$v3 = 123E4; //含义为:123乘以10的4次方,还是浮点数。

浮点数使用的细节知识

浮点数不应进行大小比较

因为:

1,所有数字,最终的表示形式,都是2进制!!!

2,大多数浮点数的2进制形式,不能完全表达准确,最终只能“以很高的精度接近理论值”

3,因此,浮点数比较是不可靠。

再从另一个角度证明浮点数的不准确性:

说明: php中输出其实是做了一定的处理之后的显示结果,而js的输出是该计算结果的“真实反映”。

那应该怎么办?

考虑实际应用所需的精度的情况下,去将要比较的浮点数,转换为整数之后再比较。

比如:

要求精度为3为小数,则都乘以1000,然后取整后比较;

要求精度为4为小数,则都乘以10000,然后取整后比较;

....

说明: php中输出其实是做了一定的处理之后的显示结果,而js的输出是该计算结果的“真实反映”。

那应该怎么办?

考虑实际应用所需的精度的情况下,去将要比较的浮点数,转换为整数之后再比较。

比如:

要求精度为3为小数,则都乘以1000,然后取整后比较;

要求精度为4为小数,则都乘以10000,然后取整后比较;

....

小数转二进制的做法:乘2并顺序取整数部分(了解):

当整数运算的结果超出整数的范围后,会自动转换为浮点数(了解)。

获取一个数据(变量)的类型的函数有:

getType($变量); 返回的是该类型的名字(字符串);

var_dump($变量): 会输出该变量的类型,数据内容,(以及长度);

字符串

有如下4形式:

形式1:双引号字符串:

$str1 = “字符串内容.....”;

形式2:单引号字符串:

$str2 = ‘字符串内容.....’;

形式3:双引号定界符字符串:

$str3 = <<<”标识符A”

字符串内容....

标识符A;

形式4:单引号定界符字符串:

$str4 = <<<’标识符B’

字符串内容...

标识符B;

双引号字符串

单引号字符串:

说明:

实际上,单引号字符串中,只有最后一个“\”才是必须进行转义的。

双引号定界符字符串(heredoc):

单引号定界符字符串(nowdoc):

布尔类型

单词是bool,boolean。

其只有2个数据:true,false;

布尔类型的一个常见应用情形是:对一个变量直接进行判断,比如if判断,示例如下:

这里的判断,永远是指:判断该变量(数据)“是否为真”。

对于这种情况,只有如下数据是被当做“假”(false):

0, 0.0, “”, “0”, null, array(), false, 还有一个是“未定义的变量”

其余都是真。

参考:

手册》附录》PHP类型比较表》

类型转换

自动转换:

在任何运算中,如果需要某种类型的数据,而给出的数据不是该类型,通常都会发生自动转换:将该类型转换为目标需要的类型。

比如: octdec($x), bindec($x), hexdec($x); //这里就要求$x必须是字符串,如果不是,就会转换;

$v1 = 1“2”; //此时也发生了自动转换。

强制转换:

自动类型转换是由“运算符”或类似运算符的语句来决定的。

而:

强制类型转换,仅仅是一个简单的语法:

形式:(目标类型)数据;

含义: 将该数据转换为设定的目标类型;

例子:

通常的转换目标类型有:

(int), (float), (string), (bool), (array), (object)

上述强制类型转换,并不改变该变量的本身数据或类型。

对应,有一个语法是直接改变改变本的数据(及类型):

settype( $变量名, “目标类型”);

类型相关的函数

var_dump():用于输出变量的“完整信息”,几乎只用于调试代码。

getType($变量名):获取该变量的类型名字,返回的是一个表示该类型名字的字符串,比如:“string”,“bool”,“double”,“int”

setType($变量名,“目标类型”):将该变量强制改变为目标类型;

isset(), empty(), unset();。。。。省略!

is_XX类型() 系列函数:判断某个数据是否为某种类型,有如下一些:

is_int($x); 判断$x是否是一个整数类型;

is_float($x);

is_string($x);

is_bool($x);

is_array($x);

is_object($x);

is_null($x);

is_numeric($x); 判断$x是否是一个数字!

is_scalar($x); 判断$x是否是一个“标量类型”

查看相关素材及更多课程请搜索微信公众号“爱搞机个人版”,喜欢学习的建议关注下,所有课程免费! 点下关注不迷路!

,
    推荐阅读
  • 魅族ba612是什么型号 魅族ba712什么型号

    ba612是魅族note5手机电池的型号。魅族科技有限公司是一家知名手机厂商,位于中国广东省珠海市。魅族M8是国产第一部智能手机,被微软总部珍藏在展厅。Flyme系统是魅族精品理念在软件上的体现,是魅族的核心竞争力之一,被魅族称为“产品的灵魂所在”。Flyme8提出全新设计语言“AliveDesign”。魅族在全国共拥有2000多家专卖店,产品在中国大陆、中国台湾、俄罗斯、英国、乌克兰、以色列、捷克、马来西亚等销售。2015年,魅族手机全球增长率第一。

  • 皮蛋黄瓜煲(皮蛋黄瓜煲的地道做法)

    皮蛋黄瓜煲主料:皮蛋三个,每个切成六块;干淀粉一汤匙;黄瓜一个,切厚片;香葱一棵,切碎;汤一大碗将皮蛋块逐一薄薄地扑上一层干淀粉。将锅置火上放油烧七、八成热,将皮蛋块放锅中略炸后捞出沥干油。将干净的锅置火上,倒入鲜汤、盐烧沸后下黄瓜片、皮蛋块。煮一分钟后起锅盛汤碗里,撒上葱碎即成。

  • 奶牛有公的吗(奶牛的特点)

    奶牛是乳用品种的黄牛,经过高度选育繁殖的优良品种。皮薄,毛细短,皮下脂肪少,全身结构匀称,细致紧凑,棱角清晰。后躯较前躯发达,乳房庞大,重可达11~28千克,乳静脉明显。耐热性较差,对饲养管理要求较高。世界上奶牛品种近百个,其中最著名的有黑白花牛、娟姗牛、更赛牛、爱尔夏牛等。18世纪末19世纪初中国开始引入西方专门化奶牛品种。经用黑白花牛与中国黄牛杂交,并对其后代进行长期选育,已培育出中国黑白花奶牛品种。

  • 剪掉的头发怎么保存(剪掉的头发选择什么方式保存)

    自然存放,头发是一种双硫键结构的角质蛋白组织除了强酸和强碱以外,很难分解破坏它因此在自然环境中以一般的条件来保存她几十年甚至上百年也没问题把它洗干净放在纸盒(袋)里干燥不易沾灰的地方即可,今天小编就来说说关于剪掉的头发怎么保存?剪掉的头发怎么保存自然存放,头发是一种双硫键结构的角质蛋白组织。密封保存,采取密封玻璃管进行珍藏。其实也是一件不错的艺术品。

  • 桑葚的功效与作用吃法

    桑葚的功效与作用吃法功效:桑葚的一大功效便是能够增强人体的免疫功能,帮助维持人体的营养均衡,减少细菌侵袭。春秋季节的气候多变容易导致风寒感冒,多吃桑葚有助于增强免疫力,减少感冒。对于有失眠多梦,少年白头等症状的,可以和何首乌一同食用;对于阴亏贫血,肝肾不调等症状的,可以和旱莲草以及女贞子一同服用。放在阴凉处密封保存,3个月后即可过滤饮用。

  • 补水面膜使用后要洗脸吗(补水面膜做完可以做些什么呢)

    做完补水面膜,然后再按摩下脸部让其吸收下,然后用清水清洗干净,在涂上水、乳液等。因为面膜的精华液过于黏糊,洗掉后会清爽很多。而且在用完面膜后很多人还会涂抹精华、乳液面霜之类的保养品。厚重的面膜精华液残留在脸上不仅触感不好,还容易有搓泥等情况。洗掉面膜还可以节约保养等待时间,一般等面膜完全吸收起码要等半小时左右,不少人等不了那么久,就直接去清洗然后上后续护肤品了。

  • 小说有毒吗(小说会很疼吗)

    不过好在锅里有饭菜,两人狼吞虎咽的吃完饭后,便来到了刘明的房间里。看着那原本只有指甲盖大小的血泡竟然长大了不少,这也让刘明担心会妨碍到唐一菲走路,所以便刻不容缓的进行治疗。刘明指了指他的那张床,这可是他今天中午刚刚换的新枕套。一分钟不到,唐一菲便快速的将睡衣给换好,然后躺在了床上用被子盖住身体后,才对着刘明喊道。

  • 手机换了新电池突然充不进电(手机换了新电池突然充不进电原因简述)

    以下内容希望对你有帮助!首先要检查一下,原装充电器是否正常。检查一下,充电数据线插头与手机充电尾插这两者之间内部是否存在接触不良等情况。既然电池是新换的,那在通过上述的检查都是正常的话,那这手机充不上电的情况,有可能是主板上的充电控制电路出现了硬件故障。

  • 白萝卜咸菜怎么做(白萝卜咸菜的做法)

    白萝卜去皮,切成4半,然后切成薄片加点盐,白糖腌制2小时后挤掉水分,晾至半干,接下来我们就来聊聊关于白萝卜咸菜怎么做?以下内容大家不妨参考一二希望能帮到您!白萝卜咸菜怎么做白萝卜去皮,切成4半,然后切成薄片。将白萝卜放入干净盆中,加入1勺白糖,加入适量盐,大蒜去皮剁碎。放入盆中,加入野山椒,加入1勺老陈醋,加入1勺极鲜酱油,加入1勺米醋,加入适量香油拌匀腌10小时。

  • 人身损害赔偿纠纷去哪里调解(调解化解损害赔偿纠纷)

    镇调委会在告知双方当事人调解原则、调解纪律、调解程序后受理了此案。双方各执一词,争吵不休,调解陷入僵局。提供劳务一方因劳务受到损害的,根据双方各自的过错承担相应的责任。在征得双方同意后,调解员按照工伤赔偿标准继续开展调解。张某义将赔偿金额提到2.5万元,张某嘉则降到3.5万元。最终,经过面对面协商,双方将赔偿金额锁定在了3万元整。至此,双方对调解协议达成一致,纠纷得以圆满化解。