0x01 PHP数据类型
一、基础数据类型
整型 int
浮点型 float
$f1=1.23;
$f2=1.23e10;
$f3=pHP_INT_MAX+1; 整形超过最大的存储时,将会使用浮点型存储
var_dump($f1,$f2,$f3);
字符串 String
布尔类型 Boolean
布尔类型:两个值true和false,用于判断比较
二、复杂数据类型
数组 array
对象 object
三、特殊数据类型
资源类型 Resource
Null
0x02 PHP运算符
原码&反码&补码
正数的原码、反码、补码都一样
反码:符号位不变,其他位取反
补码:反码+1
5
原码:10000101 正数的原码、反码、补码都一样
反码:11111010 符号位不变,其他位取反
补码:11111011 反码+1
位运算符
注意:
1、系统进行位运算的时候都是使用的补码
2、运算结束之后都必须转换成原码才是最终要显示的数据
位运算:取出计算机中最小的单位bit进行运算
&:按位与,两个位都为1,结果位1,否则为0
|:按位或,两个有一个为1,结果为1
~:按位非,一个位如果为1,则为0,否则反之
^:按位异或,两个相同则为0,不同则为1
<<:按位左移,整个位(32位),向左移动一位,右边补0
>>:按位右移,整个位(32位),向右移动一位,左边补符号位(正数补1,负数补0)
0x03 PHP 流程控制
控制分类
1、顺序结构
代码从上往下,顺序执行(代码执行的最基本结构)
2、分支结构
给定一个条件,同时又多种可执行代码块,然后根据在条件执行某一段代码
if分支
给定一个条件,同时为该条件设置多种(两种)情况,通过条件判断来时限具体的执行段
最简if:只有一段代码,可以选择是否执行
if(条件表达式){
//满足条件索要执行的内容 //顺序结构}
$day="sunday1";
if ($day=="sunday"){
echo 'go out';
}
基础if:有两面性,满足调价或者不满足条件都有对应的执行代码
if(条件表达式)
{
//满足条件索要执行的内容 }
else{
//不满住条件下要执行的代码端
}
复杂if:在判断条件之后,通常有两种结果,满足或者不满住,在不满足之后再次进行条件判断
if(条件表达式1)
{//满足条件表达式的代码段1}
elseif(条件表达是)
{//满足条件2要执行的代码块2}
else{//不满足条件1和2的时候要执行的代码块3}
switch分支
有一组情形存在,通过一个条件,通常有多个值,但是每一个值都会有对应不通的代码块
switch判断方式:是将条件放到分支结构内部判断
switch基本语法:
switch(条件表达式){
//所有条件判断:逐个进行
case 值1:
要执行的代码段;
break;
次匹配条件,会自动顺序执行向下的所有代码(case代码除外),需要终端执行 break标识中断switch结束
case 值2:
要执行的代码段:
break;}
//分支结构:switch分支
//根据日期做不通的事情
$day=1;
switch ($day){
//$day是一个具体的值
case 1:
echo '1';
break;
case 2:
echo '2';
break;
case 3:
echo '3' ;
break;
default:
echo 'error';
break;
}
3、循环结构
再某个条件控制范围内,指定的代码块可以重复执行
for循环:通过条件、起始和终止判断执行
for(条件表达式1;条件表达式2;条件表达式3)
{
//条件表达式1:定义初始化条件,可以有多种赋值语句存在,使用逗号分隔即可
//条件表达式2:边界判定,限定循环执行的次数
//条件表达式3:用来执行条件变化
//循环体
}
for循环执行原理
1、执行条件表达式1:定义初始化条件(执行1次)
2、执行表达式2:判断条件(N次)
2.1满足条件,执行循环体
2.2不满足条件,循环执行
3、执行循环体(N次)
4、执行条件表达式3:玄幻变量变化(N次)
5、执行表达式2:判断条件(N次)
6、重复执行342步骤:直到第二步不满足条件结束循环
for循环特殊使用:无条件的for循环,将进入死循环,避免出现
for(;;)
{
echo "hello world";
}
while循环:通过判断条件终止
while基本语法:
条件初始化
while(条件表达式){
//条件表达式就是判断边界条件
循环体;//循环条件的变化
//while循环
$i=1;
while ($i<=10)
{
echo $i,'<br>';
$i++;
}
for和while的选择
1、如果是基于固定已知条件(数值而且是由规律的变化),使用for循环
2、while可以做灵活的条件判断(while使用的比较多)
do while循环:和while差不多
while首先进行条件判断,然后执行循环体,有可能出现第一次就条件不满足,就会直接失败。do while先执行循环体,再判断条件(至少会执行一次循环体)
do-while基本语法:
do{}while()
//do-while循环 //输出1-10之间的偶数 $i=1; do { if ($i%2!=1){//!=1说明是偶数 echo $i,'<br/>'; } //每次都要条件变更 $i++; }while($i<=10);
循环控制:在循环内部对循环本身进行控制
中断控制:重新开始循环,循环体中还有其他内容,也要执行
continue层级 //默认是1(循环可以多层嵌套)
终止控制:循环直接结束
break层级: 默认是1
//循环控制
//输出1-100之前5的倍数
$i=1;
while($i<=100){
if ($i%5!=0){
//重新循环
$i++;
continue;
}
echo $i++,'<br>';
}
因为循环经常会碰到嵌套(循环中间包含循环),如果在循环内部有些条件下,明确可以知道当前循环(捉着谁外部循环)不需要继续执行了,那么就可以使用循环控制来实现,其中内部循环也可以控制到外部,就是通过使用层级参数
continue2:当前自己循环后面内部不再执行,同时外部循环如果还有循环体也不再执行,重新来过
break2:当前自己循环结束,同时外部也结束(如果还有外部不受影响,继续执行)
foreach 循环:专门针对数组
流程控制替代语法
流程控制语法:分支和循环结构的替代语法
php本身是嵌入到html中的脚本语言,需要在html中书写一些关于判断寻呼那或者循环的结构语法,必须符合php标签规范,需要html与php进行混搭,如果使用原始的php代码那么会非常不美观
打印一个99乘法表,使用 表格展示
<table border=1>
<?php for ($i=1;$i<10;$i++){?>
<tr>
<?php for($j=1;$j<=$i;$j++){?>
<td><?php echo $i."*".$j.'='.$i*$j;?>
</td>
<?php }?>
</tr>
<?php }
?>
</table>
//在php书写到html中的这些大括号{}非常的不美观,所以php提供了一种替代机制,让其可以不用书写大括号
for(;;){ for(;;): endfor;
php应该在html中只做数据输出,输出通常伴有条件判断和循环操作,因此php提供了对应分支结构和循环结构的替代语法,全部对应的一个模式
左大括号{:
} 使用end+对应的其实标替代