变量
1、变量检测
isset
可以检测变量是否存在。
注意:对于NUll
,isset也返回false。
<?php
if(isset($p)){
echo '存在';
}else{
echo '不存在'; //不存在
}
// NULL是指没有值,也没有类型
$a = null;
if(isset($a)){
echo '存在';
}else{
echo '不存在'; //不存在
}
$b = '';
if(isset($b)){
echo '存在'; //存在
}else{
echo '不存在';
}
2、变量类型判断
//获取变量类型
$a = 'hello';
echo gettype($a); //string
$b = 1;
echo gettype($b); //integer
$c = 1.11;
echo gettype($c); //double
$d = null;
echo gettype($d); //NULL
// 判断变量是否是我们想要的类型
// is_int,is_float,is_array
$a = 1;
if(is_int($a)){
echo 'a是整型'; //a是整型
}else{
echo 'a不是整型';
}
$b = '123';
if(is_int($b)){
echo 'b是整型';
}else{
echo 'b不是整型'; //b不是整型
}
3、打印调试变量
<?php
$a = 'hello';
$b = true;
$c = false;
$d = array(1,2,'3');
echo $a.'<br/>'; //hello
echo $b.'<br/>'; //1
echo $c.'<br/>'; //没有打印出值
echo $d.'<br/>'; //Array 可能会报: Notice: Array to string conversion in ...
print_r($d); //Array ( [0] => 1 [1] => 2 [2] => 3 )
var_dump($d); //array(3) { [0]=> int(1) [1]=> int(2) [2]=> string(1) "3" }
4、变量类型转换
PHP中变量的类型是可以随时转换的,非常灵活。最常见的是字符串和数字的转换,字符串与布尔值的转换。
$a = '12';
$a = $a + 3;
var_dump($a); // int(15)
$b = '12.0';
$b = $b + 3;
var_dump($b); // float(15)
// 字符串到数字的转换,从左到右截取,直到碰到不合法的数字,截取出来的部分转换成数字
$c = '12.5aaa99';
$c = $c + 3;
echo $c; // 15.5,可能会报:Notice: A non well formed numeric value encountered in
$d = 123;
$d = $d . 'hello';
echo $d; // 123hello
// 到布尔值的判断,以下值都被当成false
// '','0', 0, 0.0, false, null, array()
5、传值赋值和引用赋值
$a = 29;
$b = 5;
$b = $a;
var_dump($a,$b); // int(29) int(29)
$b = 'hello';
var_dump($a,$b); // int(29) string(5) "hello"
// 引用赋值,注意"&"符号
$c = &$a;
var_dump($c); // int(29)
$c = 99;
var_dump($c,$a); // int(99) int(99)
6、销毁变量
$a = 99;
unset($a);
if(isset($a)){
echo 'a存在';
}else{
echo 'a不存在'; // a不存在
}
$li = 29;
$wang = &$li;
var_dump($li,$wang); // int(29) int(29)
$wang = 20;
var_dump($li,$wang); // int(20) int(20)
unset($li);
var_dump($li,$wang); // NULL int(20)
7、动态变量
$liu = '河北';
$boos = 'liu';
echo $boos; // liu
echo $$boos; // 河北
运算符
1、算法运算符
除数不能是0
$a = 10;
$b = 0;
echo $a / $b; // Warning: Division by zero in ...INF
整数相加超过最大范围会益处转换为浮点数
$a = 32000000000000000000000000;
$b = 32000000000000000000000000;
$c = $a + $b;
var_dump($c); // float(6.4E+25)
取模算法时,结果的正负只取决于$a (被除数)
$a = 10;
$b = -3;
echo $a % $b; // 1
$a = -10;
$b = -3;
echo $a % $b; // -1
$a = -10;
$b = 3;
echo $a % $b; // -1
2、比较运算符
凡运算,必有运算结果。比较运算的结果是布尔值。
$a = 5;
$b = 3;
$c = $a > $b;
var_dump($c); // bool(true)
$a = 5;
$b = 3;
$c = $a == $b;
var_dump($c); // bool(false)
// 等于,全等于
$a = 5;
$b = '5';
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
// 全等于要求类型相同,且值相等
3、三元运算符
$a = 15;
$b = 10;
$c = null;
$c = $a > $b ? $a : $b;
echo $c.'<br/>'; // 15
// 利用三元运算符,求3个数中最大的数
$a = 12;
$b = 13;
$c = 14;
$max = ( $t = ($a > $b) ? $a : $b) > $c ? $t : $c;
echo $max; // 14
4、递增递减运算符
$b = 5;
$a = $b++; //返回b本身的值,然后把b的值加1
var_dump($a,$b); // int(5) int(6)
$b = 5;
$a = $b--;
var_dump($a,$b); // int(5) int(4)
$b = 5;
$a = ++$b; //把b的值加1,然后返回新值
var_dump($a,$b); // int(6) int(6)
5、字符串运算符
$a = 'hello';
$b = 'world';
$c = $a . $b;
echo $c.'<br/>'; // helloworld
$d = 112;
$c = $c . $d;
echo $c; // helloworld112
// 下面哪个运行速度更快?
$a = 'hello';
$b = 'world';
echo $a,$b; // 这样减少了字符串拼接,更快
echo '<br/>';
echo $a . $b;
控制结构
1、switch case控制结构
$today = 5;
if($today == 1){
echo '今天是星期一';
}else if($today == 2){
echo '今天是星期二';
}else if($today == 3){
echo '今天是星期三';
}else if($today == 4){
echo '今天是星期四';
}else if($today == 5){
echo '今天是星期五';
}else if($today == 6){
echo '今天是星期六';
}else if($today == 7){
echo '今天是星期七';
}else{
echo '你来自火星';
}
// 打印结果:今天是星期五
switch ($today){
case 1;
echo '今天是星期一';
case 2;
echo '今天是星期二';
case 3;
echo '今天是星期三';
case 4;
echo '今天是星期四';
case 5;
echo '今天是星期五';
case 6;
echo '今天是星期六';
case 7;
echo '今天是星期七';
default:
echo '你来自火星';
}
// 猜猜最后打印结果?
// 上面打印结果:今天是星期五今天是星期六今天是星期七你来自火星
// 可以看出:一旦遇到判断成功,后面就直接进入了
// 所以,预防这种情况,要在case里加break
switch ($today){
case 1;
echo '今天是星期一';
break;
case 2;
echo '今天是星期二';
break;
case 3;
echo '今天是星期三';
break;
case 4;
echo '今天是星期四';
break;
case 5;
echo '今天是星期五';
break;
case 6;
echo '今天是星期六';
break;
case 7;
echo '今天是星期七';
break;
default:
echo '你来自火星';
}
switch case 适合用在验证多个可能的值时使用,不适合用在判断范围。
比如60-80分几个,0-59分不及格,81-100分优秀。
2、for循环
// 循环的一般要素:初始化(1),判断(2),执行体(3),修改变量(4)
/*
for(1;2;4){
3
}
*/
for($i=10;$i>=3;$i-=3){
echo '喝酒吃肉'.'<br/>';
}
echo $i; // 1
等同于
for($i=10;$i>=3;){
echo '喝酒吃肉'.'<br/>';
$i-=3;
}