这些问题都是从美德的角度来看的。分享陷阱很有趣,看看你是否会掉进陷阱里。

第一个问题

复制代码代码如下所示:

$ ARR =阵列(0 = > 1,AA= > 2, 3, 4);



foreach(ARR美元美元美元关键= > Val){

打印(美元=AA:5 $瓦尔);

}

输出结果是什么如果答案是1534,它就落入陷阱。

首先看看这个数组最终形成的结构:

复制代码代码如下所示:

阵列

(

{ 0 } = 1

{ aa = 2

{ 1 } = 3

{ 2 } = 4

)

然后遍历每个元素的键不等于AA,等于5,当我告诉你答案是5534时,你会有一点惊讶吗!0等于aa吗是的,0等于AA当两值在PHP逻辑判断,如果两种类型的值是不一致的,PHP自动转换值右边左边的类型,然后进行判断。因此,AA转换为0,和自然,它等于0个在左边。你可以使用它来避免这种情况,那就是,如果你把它:

复制代码代码如下所示:

打印(美元= AA :5 $瓦尔);

所以答案是1534。

第二题

复制代码代码如下所示:

我=会;

printf(%d

输出结果是什么如果你回答11,或者111111,你就会陷入陷阱。

首先要了解printf函数的功能,这里不仅是一个打印功能,而且返回值。重点是这个

复制代码代码如下所示:

var_dump(printf(%d

猜猜结果如何首先,printf打印变量本身11,然后printf将返回一个可变字符串的长度值,11有两个字符,然后返回2,所以上述语句执行的结果是公平的:

复制代码如下:(2)11int

在那之后,回头看看上面的问题,根据优先级,限制printf函数,输出11,并返回2。然后去二级printf函数,输出2,并返回1。在第三层底,1是直接印刷,所以执行的结果是1121。

第三个问题

复制代码代码如下所示:

$ = 3;

$ = 5;

如果(a = 5 | | { $ B = 7)

美元+;

美元+;

}

$。$;

死刑的结果是什么如果你回答68、46或66,你就会落入陷阱。

第一个陷阱是,答案是46。你粗心的美元= 5美元估计,B = 7 | | | | $美元= = 5 = = 7,这是一个常见的错误。

二陷阱,答案是68美元。你= 5,B = 7美元| |这个骗局,但你有没有注意到,只要执行逻辑顺序或直到一个表达式为真,后面的表达不执行,美元= 5或true,在B = 7美元不执行。

第三陷阱,答案是66.ok,你看通过逻辑或规则,所以美元= 5美元= 7 B执行,不执行,但你不认为它的逻辑表达式,并返回的值为一个转换为布尔值,看它的方式。

因此,在这三个陷阱之后,你应该知道答案。当$ a等于true时,回声$ A的输出为1,而b值不变,其结果是16。

第四个问题

复制代码代码如下所示:

$=5;

功能get_count(){

静态$ = 0;

返回$ + +;

}

+数;

get_count();

get_count(回声);

死刑的结果是什么如果你回答2,恭喜你,你掉进了陷阱。

事实上,主要的问题是两点,第一是静态类型,该值始终是静态的,第一个调用声明等于0,并增加等于1。第二呼叫,从1增加为2。但事实上是一个陷阱,就是+ +和+之间的差异,在第一个增量后+ + + +是第一个返回值的增量,所以结果等于1。

第五个问题

复制代码代码如下所示:

$ =计数(567 )+计数(NULL)+计数(false);

回声$;

如果你回答3或1,恭喜你落入陷阱。

因为计数(NULL)等于0,false也是一个值。所以计数(false)等于1。