本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、运算符
运算符:operator,是一种将数据进行运算的特殊符号,在PHP中一共有十种运算符。
(一)、赋值运算符
赋值运算:符号是“=”,表示将右边的结果(可以是变量、数据、常量和其他匀速出来的结果),保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量(常量)。
(二)、算数运算符
算术运算:基本算术操作
+:执行数据累加
-:数据相减
:键盘上没有乘法符号,使用代替,两个数相乘
/:正斜杠代替,表示两个数相除
%:取余(模)运算,两个数(整数)相除,保留余数
在进行除法运算或者取余运算的时候,对应的除数(第二个数)不能为0
(三)、比较运算符
比较运算:比较两个数据的大小,或者两个内容是否相同,返回的结果都是布尔类型:满足返回true,不满足返回false
:左边大于右边,返回结果true
=:左边大于等于右边
<:左边小于右边
<=:左边小于或者等于右边
==:左边的与右边的相同(大小相同,不管类型,string ”123“==int 123)
!=:左边的与右边的不同(大小不同,不管类型)
===:全等于,左边与右边相同:大小以及数据的类型都要相同
!==:不全等于,只要大小或者类型不同就为true
例子:如b = 123; 那么用"=="判断会返回true,但是用“===”会返回false
//比较运算符
$a = '123'; //
$b = 123; //
//判断相等
var_dump($a == $b);//true
var_dump($a === $b);//false
(四)、逻辑运算符
逻辑运算:针对不同的结果进行匹配。满足条件返回true,不满足返回false
&&和and:逻辑与,左边的条件与右边的条件同时成立(两边结果都为true)
||和or:逻辑或,左边的条件或者右边的条件只要有一个满足即可
!:逻辑非,对已有条件进行取反,本身为true,取反结果就是false
逻辑与和逻辑或又称之为短路运算:如果第一个表达式结果已经满足条件了,那么就不会运行逻辑运算符后面的表达式:在书写代码的时候,尽量将出现概率最高的(能够直接判断出结果)的表达式放到第一位,提高运算效率。和C++相同
(五)、连接运算符
连接运算:是PHP中将多个字符串拼接的一种符号
. :将两个字符串连接到一起,相当于C++/C#/Python中的+
.= : 复合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量
A .= b ⇔ A = A . b
$a = 'weedkend';
$b = 'good';
echo $a.=$b;
echo "<br/>",$a;
(六)、错误抑制符(错误控制运算符)
在PHP中有一些错误可以提前预知,但是这些错误可能无法避免,但是又不希望报错给用户看,可以使用错误抑制符处理。
@:在可能出错的表达式前面使用@符号即可
错误抑制符通常在生产环境(上线)会用到,在开发的时候不会用:系统本身最好没有任何错误。
$a = 10;
$b = 0;
// $a % $b;
@($a % $b);
(七)、三目运算符
三目运算:有三个表达式参与的运算(简单的的分支结构缩写)
语法格式:
表达式1 ? 表达式2 :表达式3;
运算:如果表达式1成立,那么执行表达式2,否则执行表达式3;
注意:如果表达式本身比较复杂,建议使用括号包起来。如下:
表达式1 ? (表达式2 ? 表达式4 : 表达式5) : (表达式3 ? 表达式5 : 表达式6);
(八)、自操作运算符
自操作:自己操作自己的运算符
++:在原来的值上+1
--:在原来的值上-1
同C/C++用法相同
+=:左边的结果与右边结果相加,然后赋值给左边;-=:左边的减去右边的结果,然后复制给左边;*=:乘法操作;/=:除法操作;%=:模操作,同C/C++用法相同。
(九)、位运算
位运算:取出计算机中最小的单位(位bit)进行运算
&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个有一个为1,结果为1
~:按位非,一个位如果为1则变成0,否则反之
^:按位异或,两个相同则为0,不同则为1
<<:按位左移,整个位(32位),向左移动一位,右边补0
>>
:按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)
注意:
1、系统进行任何位运算的时候都是使用的补码。
--计算机存储的是补码(为了实现化减为加--用加法处理减法)。用-5作为位运算时,-5在计算机内的二进制表示是二进制补码。
2、运算结束之后都必须转换成原码才是最终要显示的数据
--补码的计算结果依然是补码,但是显示时需要转为原码:符号位为0(正数)的补码=原码 不用转换;符号位为1(负数)的需要把补码转换为原码。
$a=-1;
$b=1;
echo "($a|$b)",($a|$b),"<br/>";//-1
echo "($a&$b)",($a&$b),"<br/>";//1
echo "(~$b)",(~$a);//0
(十)、运算符优先级
二、流程控制
流程控制:代码执行的方向
(一)控制分类
顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构)
分支结构:给定一个条件,同时有多种可执行代码(块),然后会根据条件执行某一段代码
循环结构:在某个条件控制范围内,指定的代码(块)可以重复执行
(二)顺序结构
最基本结构,所有代码默认都是从上往下依次执行
(三)分支结构
在PHP中,分支结构主要有两种:if分支和switch分支
1、if分支,用法同C/C++
2、switch分支,用法同C/C++
(四)循环结构
for循环、while循环、do-while循环,foreach循环,语法同C++,同样包含break和continue
其中可以用break 2跳出两层循环,continue 3这种跳出多层循环。
for($i=0;$i<10;$i++)
{
for($j=0;$j<10;$j++)
{
for($k=0;$k<10;$k++)
{
echo "我是k","<br>";
break 2;
}
echo "我是j","<br>";
}
echo "我是i","<br>";
}
三、流程控制替代语法
流程控制替代语法:分支和循环结构的替代语法
PHP本身是嵌入到HTML中的脚本语言,需要在HTML中书写一些关于判断或者循环的结构语法,必须符合PHP标签规范,需要HTML与PHP进行混搭,如果使用原始的PHP代码那么会非常不美观。
需求:打印一个九九乘法表,使用表格来展示
<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提供了一种替代机制,让其可以不用书写大括号:
<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 endfor; ?>
</tr>
<?php endfor; ?>
</table>
其中:
if ——》 if(;;): endif;
switch ——》switch(;;): endswitch;
for ——》 for(;;): endfor;
while ——》 while(;;): endwhile;
foreach不能替换