美文网首页
坑爹的php优先级面试题

坑爹的php优先级面试题

作者: 奋斗live | 来源:发表于2017-11-28 17:09 被阅读0次

php的优先级是大家容易忽略的点,然而这个却是很多笔试愿意出的题目

来看几个例子

1、

$a = 3;

if ($a = 5) {
    $a++;
}
var_dump($a);// (int)6

分析如下:
这里输出了 (int)6,因为条件中是赋值语句,肯定为真,所以执行$a++,故$a为6。

2、

<?php
$x = 2;
echo $x == 2 ? '我' : $x == 1 ? '你' : '它'; //你

分析如下:
很多人认为 会输出 ‘我’ ,按照三元运算符来说,确实如此。
但是
这里涉及到另一个知识点,三元运算符是左结合的特性,故上面代码等效为

echo ($x==2?'我':$x==1)?'你':'它';

所以上面代码又等效为

echo (true?'我':false)?'你':'它'

然后上面代码又等效为

echo '我'?'你':'它'`

所以这段代码输出的是 你

3、

$a = 3;
$b = 5;
if ($a = 3 || $b = 7)  {
    $a++;
    $b++;
}

①因为 || 优先级高于赋值语句,所以上面代码等效于:

$a =(3 || $b=7)

所以$a=true,执行括号中的内容
②递增/递减不会影响布尔值,递减NULL没有效果,递增NULL会等于1,所以$a还是等于true,二$b等于6
所以答案为 true 和 6

注意

①本来|| 优先级是高于赋值语句,也就是说这样的代码:
$a = 3 || $b=7
应该变成这样的
$a = (3|| $b) = 7
可是php并没有这样处理,而是变成了
$a = (3||($b=7))
它把 || 右边的当做了一个整体进行执行了
再看下一个例子

<?php 

 $a = 3;
        $b = 4;
        if ( $a = 4 && $b = 5 && $b=7){
            $a += 1;
            $b += 1;
        } 
var_dump($a);(int)2
var_dump($b);(int)2

这个等效为

if ( $a = 4 && ($b = (5 && $b=7))){
            $a += 1;
            $b += 1;
        } 

相关文章

  • 坑爹的php优先级面试题

    php的优先级是大家容易忽略的点,然而这个却是很多笔试愿意出的题目 来看几个例子 1、 分析如下:这里输出了 (i...

  • 一道坑爹的面试题

    网上看到一道坑爹的面试题,代码如下:(js真是处处是坑呀。。。(┬_┬)) 输出结果(chrome下): 作为前端...

  • 坑爹

    坑爹…豆瓣就是个坑爹货

  • 坑爹的爹坑

    01 村里的奇葩事,真事!就是奇葩的让人咂舌。张明白有一个‘奇葩’的爹,人称张算计。 清明节,村里的张算计死了。人...

  • 坑爹?爹挖的坑

    坑爹的儿子都是被爹坑的 白米先生 字数 474 · 阅读 1 2020-06-13 09:35 说起来像绕口令。 ...

  • 坑爹的爹

    2023年1月31日 星期三 下午4:44 昨晚上娃爹又一晚上没回来了! 第一次一晚上跟他正面对决!从来没有这么直...

  • 2018-02-08

    坑爹,坑娘。还没见过坑儿子的

  • 奥本海默——一个坑爹的特例

    坑爹算不上新的发明,古今中外,被坑惨了的爹不在少数。那些坑爹的主儿,大都年少轻狂、不学无术。 不过,凡事都有例外。...

  • 程序员找工作必备 PHP 基础面试题 (四)

    程序员找工作必备 PHP 基础面试题​ 程序员找工作必备 PHP 基础面试题(二) 程序员找工作必备 PHP 基础...

  • PHP高级程序员必看知识点:目录大全(不定期更新)

    面试题系列: 八重樱:分享一波腾讯PHP面试题 八重樱:2019年PHP最新面试题(含答案) 八重樱:Redis ...

网友评论

      本文标题:坑爹的php优先级面试题

      本文链接:https://www.haomeiwen.com/subject/zjcebxtx.html