1. 变量检测(isset、empty)
isset 可以检测变量是否存在,返回true或false
empty 可以检测变量是否为空,变量不存在也算做为空
<?php
//$a = 123;
// 变量未定义即不存在,定义后销毁也是不存在
if(isset($a))
echo '变量a存在';
else
echo '变量a不存在';
?>
<?php
$a = 0;
var_dump(empty($a));
// 输出结果 bool(true)
?>
总结:empty 为空的几种情况:
0、‘0’、FALSE、null、array()、’’、var $var(只定义不赋值)
2. 变量类型检测(gettype)
<?php
$a = 123;
echo gettype($a);
// 输出结果 integer
?>
此外,判断是否想要的类型还可以用:
is_int()
is_float()
is_array() 等等。
3. 打印显示
echo、print_r、var_dump、dump
echo 只适用于字符串 (开发最常用)
print_r 适用于字符串、数组 (调试常用)
var_dump 适用于字符串、数组 (调试常用)
dump 可打印树型和值(不常用、部分模版引擎可用)
4. 类型转换
字符串转数字
从左往右截取数字,知道碰到不合法的字符,截取出来的部分转成数字
如:
<?php
$a = '123.456mkon';
$a = (float)$a;
var_dump($a);
// 结果输出 float(123.456)
?>
此外,还可以通过加法来获取:
<?php
$a = '12.5time';
$a = $a + 3;
var_dump($a);
// 输出结果 float(15.5)
?>
数字转字符串
直接使用类型转换
<?php
$a = 123;
$a = (string)$a;
var_dump($a);
// 输出结果 string(3) "123"
?>
此外,还可通过拼接字符或字符型变量,如:
<?php
$a = 123;
$a = $a . 'date';
var_dump($a);
// 输出结果 string(7) "123date"
?>
其它类型转布尔型
如下几种情况都为假:
0、‘0’、FALSE、null、array()、’’、var $var(即只定义不赋值)
其余为真。
<?php
$a = 0;
$a = (bool)$a;
var_dump($a);
// 输出结果 bool(false)
?>
5. 赋值
PHP赋值有两种方式:传值赋值、引用赋值。
传值赋值:当将表达式的值赋予变量时,整个原始表达式的值都被赋予到目标变量。即,该变量记录的实际值为所赋予的值。
引用赋值:记录的是变量地址。例如:变量a引用赋值给变量b,则变量b也指向变量a所指向的内存地址,两者管理同一个值。换句话说,变量b相当于变量a的别名。
<?php
$a = 'a';
$b = 'b';
echo "$a,$b <hr />";
// 显示a,b
$b = $a; // 传值赋值
$a = 'a1';
echo "$a,$b<hr />";
// 显示a1,a
$b =& $a; // 引用赋值
$a = 'a2';
echo "$a,$b <hr />";
// 显示a2,a2
?>
6. 销毁变量(unset)
销毁变量,指的是删除变量,是从内存中释放。
及时销毁变量可以有效防止内存不足
<?php
$a = 10;
$b = &$a;
var_dump($a, $b);
// 输出 10 10
$b = 15;
var_dump($a, $b);
// 输出 15 15
unset($a);
var_dump($a, $b);
// 输出 null 15
?>
7. 动态变量名
<?php
$a = 'hello, world';
$b = 'a';
$c = 'b';
var_dump($c, $$c, $$$c);
// 输出 "b"、 "a"、 "hello, world"
/*
因为PHP查找变量是根据'$'符号来逐个检索的,从左往右,以$$c为例:第一个$检测到后面还有一个$,先进行后面的解析获取,得到$c的值为'b',再把'b'拼接到第一个$后,即为$b,最后查找$b的值为'a'
*/
?>
8. 算术
运算是为了得到结果,基本上所有运算都能用计算机执行。不考虑配置的情况下,运算速度取决于运算的复杂度。
注意:
除数不能为0
取模算法时,结果的正负仅取决于被除数
9. 比较运算符
>= 大于或等于
<= 小于或等于
== 等于
=== 全等于,类型和值都相等才为真
<?php
$a = 123;
$b = '123';
var_dump($a == $b); // true
var_dump($a === $b); // false
?>
10. 三元运算符
根据条件返回结果1还是结果2,例:
<?php
// 获取$a、$b中的最大值
$a = 2;
$b = 3;
$c = $a > $b ? $a : $b;
var_dump($c);
// 输出结果 int(3)
?>
11. 逻辑运算符
&& 且,前后条件都成立为真,否则假
|| 或,前后条件任一条件成立为真,否则为假
! 非,条件不成立为真,否则为假
12. 递增递减
变量自加或自减,例:$a++、$a–
注意:加减符号放在前面或后面意义是不一样的。
<?php
// 先用后改:符号放在后面,先使用变量,使用过后再改变值
$a = 5;
$b = $a++;
var_dump($a, $b); // 6 5
?>
<?php
// 先改后用:符号放在前面,先改变变量的值,再使用
$a = 5;
$b = ++$a;
var_dump($a, $b); // 6 6
?>
13. 字符串运算符
字符串运算符为 ‘.’,用于拼接字符串或变量。
<?php
$a = 'hello';
$b = 'world';
$c = $a . $b;
echo $c;
?>
注意:在仅仅需要输出变量的时候,应尽量不用拼接符号,拼接需要时间,当然这点时间基本可以忽略不计,但没必要进行拼接,例如:
<?php
$a = 'hello';
$b = 'world';
// 方案1. 先进行拼接,然后输出,有拼接过程。
echo $a . $b;
// 方案2. 直接输出,无拼接过程(推荐该方案)
echo $a , $b;
?>
14. 赋值运算符
‘=’为赋值运算符,把等号右边的值给到左边变量。左边必须用变量来承接。
<?php
$a = 5;
/*
执行了两件事:
1. 把5赋给$a
2. 返回运算结果,即5
*/
?>
15. 控制结构
if-else
switch-case
if-else 适用于大部分条件控制
switch-case只适用于验证多个可能值,不适用于验证值的范围
<?php
if(3 > 2){
echo '3 大于 2';
}else{
echo '3 不大于 2';
}
?>
<?php
$day = 4;
switch($day){
case 1:
echo '周一';
break;
case 2:
echo '周二';
break;
case 3:
echo '周三';
break;
case 4:
echo '周四';
break;
case 5:
echo '周五';
break;
case 6:
echo '周六';
break;
default:
echo '周日';
break;
}
?>
注意:如果case里没有加break,将一直往下执行。default是排除列出的所有可能之后的条件。
16. while、do-while
二者皆为循环控制命令。异同:当条件成立时,二者的循环次数一样;当条件不成立时,do-while执行一次。
举个例子:
while 就好比一家饭店,这家饭店需要先给钱才能吃饭,顾客没有带钱,所以直接就不能去吃饭
do-while 这家饭店是先吃饭后给钱,顾客不管带没带钱,都能吃一顿,吃完结账时发现没带钱,那么下次就不能再吃了。只能吃一次。
<?php
// while 条件成立才执行
$rmb = 10;
while($rmb > 0){
$rmb--;
var_dump($rmb);
}
?>
<?php
// 先执行,再判断条件是否成立,成立就继续执行
$rmb = 10;
do{
$rmb--;
var_dump($rmb);
}
while($rmb > 0);
?>
注意:循环体内部需要对判断条件做更改,把循环次数控制在有限范围内,防止死循环。
17. for循环
一般要素:初始化、判断、执行体、修改变量
<?php
for($i = 100; $i > 3; $i -= 2){
var_dump($i);
}
?>
18. break 和 continue
break 结束整个循环
continue 结束本次循环
<?php
for($i = 0; $i < 10; $i++){
if($i == 8){
break;
}
var_dump($i);
}
?>
<?php
for($i = 0; $i < 10; $i++){
if($i == 8){
continue;
}
var_dump($i);
}
?>