php 前++和后++区别 趣味题

php 前++和后++区别 趣味题

  • 前++ 先自增在返回
$y = 0;
$y = ++$y;
var_dump($y); //1

$y = 0;
$i=$y+1;$y=$i;
var_dump($y); //1
  • 后++ 先返回再自增
$y = 0;
$y = $y++;
var_dump($y); //0

$i = 0;
$y=$i;$i=$i+1;
var_dump($y); //0
  • 趣味题
$count = 5;
function get_count() {
    static $count = 0;
    $res = $count++;
    return $res;
}
++$count;
get_count();
echo get_count();   // 1 //原因 先返回后自增
  • 自动类型转换判断
$arr = array(0=>1,"aa"=>2, 3, 4);

foreach($arr as $key=>$val){
    print($key == "aa" ? 5 : $val);
}
//5534
var_dump(0 == 'aa');    //bool(true)
var_dump('0' == 'aa');   //bool(false)

在PHP中两个值进行逻辑判断时,如果两个值的类型不一致PHP会自动把右边的值转换到左边的类型,然后再进行判断。因此"aa"转换整形等于0,自然也就等于左边的0了,相反如果将0换成字符串,就不会隐式转换类型了,比较自然不相同了。

  • printf
$i='11';
printf("%d\n",printf("%d",printf("%d",$i))); //1121

printf不仅是打印函数,而且返回字符串长度

$res = printf('%d',11);
var_dump($res); //2
$res = printf('%d',1);
var_dump($res); //1
  • if语句
$a = 3;
$b = 5;
if($a = 5 || $b = 7) {
    $a++;
    $b++;
}
echo $a . " " . $b; //1 6
  • 1、注意=号赋值 非==判断
  • 2、 注意 if 语句这里 $a=5 ,这里的$a是bool类型
  • count
$a = count ("567")  + count(null) + count(false);
echo $a;
  • count 不同类型返回值,null为0,false为1
var_dump(count("567")); //1
var_dump(count(null));  //0
var_dump(count(false)); //1