一道面试题,帮忙看看,谢谢

qq_35385669 2017-12-30 12:51:58
<?php
$a = 3;
$b = 4;
if ($a = 5 || $b = 6) {
$a ++;
$b ++;
}
echo $a. " ".$b;

输出的结果是 1 5 ,请教!
...全文
288 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-12-30
  • 打赏
  • 举报
回复
$a = 3; $b = 4; if ($a = 5 || $b = 6) { var_dump($a, $b);//bool(true) int(4) $a ++; $b ++; } echo $a. " ".$b; 加上套红的那句,一切真相大白 解释一下: $a = 5 || $b = 6 实际执行的是 $a = (5 || $b = 6) 因为赋值运算符的优先级最低所以含有逻辑运算符(||)的表达式先被执行 表达式 5 || $b = 6 的值为 true 所以 $a 的值为 true 由逻辑运算的短路法则可知 对于 5 || $b = 6,由于左边是 5(非空值)已经满足 true 了,所以右边的 $b = 6 将不被执行,于是 $b 依然是 4 接下来的 $a++ 由于递增运算对逻辑值无效,$a 的值维持 true 不变 而 $b++ 使得 $b 的值由 4 变到 5 最后的 echo $a. " ".$b; $a 的 true 被转换成 1,用 var_dump($a) 时还是 true 所以最终显示 1 5

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧