freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PHP入门到精通-学习之路
2024-10-26 16:54:25
所属地 北京

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+对应的其实标替代

# php漏洞 # php # php安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录