变量类型
整型,浮点型,字符串,布尔,数组,对象,NULL,资源
NULL是指没有值,也没有类型
$a=null;
变量检测
isset可以检测变量是否存在,
注意:对于NULL,isset也返回false
$a=null;
//会输出不存在
if(isset($a)){
echo '变量a存在';
}else{
echo '变量a不存在';
}
变量类型判断
gettype获取变量类型
is_int(),is_array(),is_float(),is_integer(),is_string(),is_object(),is_bool()
$a=false;
echo gettype($a);
echo '<br>';
if(is_bool($a)){
echo 'a是布尔值';
打印调试变量
echo 字符串
print_r 数组
var_dump 所有类型,打印变量的类型及其值
$a = '1';
$b = array(1,2,'3');
echo $a;
print_r ($b);
echo '<br>';
var_dump($b);
变量类型转换
变量类型可以随时转换,非常灵活
最常见的是字符串与数字的转换
或是数字/字符串 -> 布尔值的转换
//字符串到数字,从左到右截取,直到碰到不合法的数字,截取出来的部分转成数字
$a = 'world12.5hello';
$a =$a + 3;
var_dump ($a);
//数字到字符串
$a = 123;
$a = $a . 'hello';
echo $a;
//到布尔型的判断,以下值都被当成假,其他都被当成真
//'','0',0,0.0,false,NULL,array()
if (''==false){
echo '空字符串为假';
}
赋值
传值赋值,引用赋值
//传值赋值,一个改变了不影响另一个
$li = 29;
$wang = 23;
$wang = $li;
var_dump ($li,$wang);//int(29) int(29)
$li = 'w';
var_dump ($li,$wang);//string(1) "w" int(29)
echo '<br>';
//引用赋值,一个改变了会影响另一个
$li = 29;
$wang = 23;
$wang = &$li;
var_dump ($li,$wang);//int(29) int(29)
$wang = 'w';
var_dump ($li,$wang);// string(1) "w" string(1) "w"
销毁变量
unset
unset引用赋值的某个变量时,不会影响对方
$a = 99;
unset($a);
if(isset($a)){
echo 'a存在';
}else{
echo 'a不存在';
}
echo '<br>';
$li = 29;
$wang = &$li;
var_dump ($li,$wang);//int(29) int(29)
$wang = 20;
var_dump ($li,$wang);//20,20
unset ($li);
var_dump ($li,$wang);//NULL,20
动态变量名
用变量的值再做变量的名,如$$a
$liubei = '河北';
$laoda = 'liubei';
$paihang = 'laoda';
echo $laoda,$$laoda,$$$paihang;//liubei河北河北
算术运算符
//除数不能为0
$a = 10;
$b = 0;
echo $a / $b;
echo '<br>';
//太大转为浮点数
$a = 3200000000;
$b = 3200000000;
$c = $a + $b;
var_dump($c);
echo '<br>';
//取模算法时,结果的正负仅取决于被除数
$a = -10;
$b = -3;
echo $a % $b;
比较运算符
//凡运算必有运算结果,比较运算符的结果是布尔型值
$a = 5;
$b = 3;
$c = $a > $b;
var_dump($c);
$c = ($a == $b);
var_dump($c);
//全等于,要求类型相同且值相等
$a = 5;
$b = '5';
var_dump($a == $b);
var_dump($a === $b);
$res = 0;
if($res === false){
echo '没找到';
}else{
echo '找到了';
}
三元运算符
$a = 15;
$b = 10;
$c = null;
if($a >= $b){
$c = $a;
}else{
$c = $b;
}
var_dump($c);
$c = ($a > $b? $a : $b);
var_dump($c);
//用三元运算符找出三个数中最大的
$a = 1;
$b = 2;
$c = 3;
$d = (a > b)?((a > c)? a:c):((b > c)?b:c);
echo $d;
逻辑运算符
简化这种大量的嵌套
//某女要求有房有车才嫁
$house = true;
$car = false;
if ($house === true){
if($car === true){
echo '嫁';
}else{
echo '不嫁';
}
}else{
echo '不嫁';
}
//有房有车才行
$house = true;
$car = false;
if(($house == true) && ($car == true)){
echo '嫁';
}else{
echo '不嫁';
}
echo '<br>';
//有房或有车都行
$house = false;
$car = false;
if($house || $car){
echo '嫁';
}else{
echo '不嫁';
}
递增递减运算符
$b = 5;
$a = $b++;//1返回b本身的值,2把b的值加1
var_dump($a,$b);//5,6
echo '<br>';
$b = 5;
$a = --$b;//1把b的值减1,2返回新值
var_dump($a,$b);//4,4
字符串运算符
$a = 'hello';
$b = 'world';
echo $a,$b;//这样运算速度比拼接快
echo '~~~';
echo $a.$b;
echo '~~~';
$c = $a.$b;
var_dump ($c);
$d = 112;
$c = $c . $d;
var_dump($c);
switch case控制结构
if-else括号太多,麻烦,可以用这个简化
switch case适合用在验证多个可能的值时使用,不适合用在判断范围
$today = 0;
switch ($today){
case 1:
echo '今天是星期1';
break;
case 2:
echo '今天是星期2';
break;
case 3:
echo '今天是星期3';
break;
case 4:
echo '今天是星期4';
break;
case 5:
echo '今天是星期5';
break;
case 6:
echo '今天是星期6';
break;
case 7:
echo '今天是星期7';
break;
default:
echo '你来自火星';
}
while循环
while
$i = 0;
while($i<=10){
echo $i++,'<br/>';
}
do while
先执行一次再说
$i = 100;
do{
echo '我照样执行一次';
}while($i<10);
for循坏
循环的一般要素:初始化(1),判断(2),执行体(3),修改变量(4)
for(1;2;4){
3
}
for($i = 10; $i>=3 ; $i -=3){
echo '喝酒<br/>';
}
可以同时执行多个变量
for($i=1, $j=5;$i<=5 && $j>=1; $i++,$j--){
echo $i,'~',$j,'<br/>';
}
break和continue
//跳过4号
for ($i=0; $i < 10; $i++){
if($i == 4){
continue;
}
echo $i,'<br/>';
}
//找到7之后,后面的就不看了
for ($i=0; $i < 10; $i++){
if($i == 7){
echo $i,'找到';
break;
}else{
echo $i,'<br/>';
}
}