ini_set('display_errors',0);$arr = array(1=>1,3=>3);$i = 2;$a = 'test' . isset($arr[$i]) ? $arr[$i] : $i; //null
因"."的优先级高于三元运算符"?:"。以是程序实在报错了。会说$arr的索引2不存在。
$a = 3;$b = 5;if($a = 5 || $b = 7) { $a++; $b++;}echo $a . " " . $b; // 1 6
因"="的优先级低于"||",以是先逻辑判断再赋值。也便是($a = (5 || $b = 7))。以是,末了实在给a赋值true了,$a即是1.
$x = 2;echo $x == 2 ? '我' : $x == 1 ? '你' : '它'; //你由于 == 的优先级比三元运算符高$x = 2;//将2赋值给变量x echo true ? '我' : false ? '你' : '它';//由于三元运算符左结合的特性 以是如上代码等效于echo (true ? '我' : false) ? '你' : '它';//先打算左边括号里的echo '我' ? '你' : '它';
因"=="的优先级高于"?:"

//file1.php<?php$a = '123';?>//file2.php<?phpecho include('file1.php'); //1?>
因include()也是一个函数,有返回值。在成功时返回1,失落败时返回缺点信息。如果被包含的文件有return,则inculde()成功时返回该文件的返回值。
七、static和++<?php$count = 5;function get_count() { static $count = 0; return $count++;}++$count;echo $count; //6echo get_count(); //0echo get_count(); //1?>
因static $count,以是只在第一次调用get_count的时候对$count赋值为0,第二次再进来这个函数,则不会第二次赋值。其次便是return $count++和return $count了,前者先返回,后者先再返回。
八、类型转换<?php$arr = array(0 =>1,'aa' => 2,3,4);foreach($arr as $key => $val){ print($key == 'aa' ? 5 : $val);}//5534?>
因遍历数组第一次的时候,$key和aa的比较实际便是0和aa的比较,一个是int一个是string,这个时候会转换类型,将字符串转换为数字再与数字比较。以是0=='aa'便是0==0,所以为true,也便是输出5。
九、count的用法echo count (false); //1$a = count ("567") + count(null) + count(false);echo $a;//2
如果不是数组或者工具的其他类型,返回1.那么这个值该当便是1+0+1了
十、++和&<?php$arr = array(1,2,3);foreach($arr as &$val) { echo $val % 2; //1,0,1 $val += $val % 2 ? $val++ : $val--;}print_r($arr);$val = 0;print(join('',$arr));//101Array ( [0] => 3 [1] => 3 [2] => 7 ) 330?>
因foreach结束后的数组该当是array(3,3,7);末了给第三个元素赋值为0,以是便是330了。个中把稳的是&,如果有&则是对原变量操作,如果没有,则是师长西席成一个新变量,然后给这个变量复制,末了操作的是这个新变量。