PHP 注意点 坑 ╰半橙微兮° 2021-06-24 15:58 344阅读 0赞 ## **and && or ||优先级问题:** ## and or的优先级低于&& || ,且低于=。 因此`$b1 = $bA and $bB`先运算的是`$b1 = $bA`。 $bA = true; $bB = false; $b1 = $bA and $bB; $b2 = $bA && $bB; var_dump($b1); // $b1 = true var_dump($b2); // $b2 = false $bA = false; $bB = true; $b3 = $bA or $bB; $b4 = $bA || $bB; var_dump($b3); // $b3 = false var_dump($b4); // $b4 = true ## **\{\}块级作用域:** ## php中\{\}外面是可以取到其内部值的。PHP有函数作用域,但是没有块级作用域。 if(1){ $a = 123; } print_r($a); // $a = 123; for ($i = 0; $i < 10; $i++) { for ($j = 0; $j < 10; $j++) { $k = 777; } } var_dump($j);//输出10 var_dump($k);//输出777 $arr = [1, 2, 4]; foreach ($arr as &$val) { $val *= 2; } $val = [];//重新赋值 $val[0]=9; $val[1]=10; var_dump($arr,$val); 输出: array(3) { [0]=> int(2) [1]=> int(4) [2]=> &array(2) { [0]=> int(9) [1]=> int(10) } } array(2) { [0]=> int(9) [1]=> int(10) } 由于`$arr as &$val`,循环到第三个元素, arr数组的第三个元素变成引用 a r r 数 组 的 第 三 个 元 素 变 成 引 用 val。虽然重新赋值为空数组,但后面的修改还是会影响到了arr。原因是 a r r 。 原 因 是 val是一个引用,后面的修改都会影响到,除非加unset($val)。
还没有评论,来说两句吧...