• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于PHP语法中的 or 与 || 的问题。

php 搞代码 3年前 (2022-01-25) 16次浏览 已收录 0个评论
文章目录[隐藏]
<code>    $a = 0;        $b = 0;            if($a=3 or $b=3){        $a++;        $b++;    }    echo $a.",".$b;</code>

返还值为4,1

<code>    $a = 0;        $b = 0;            if($a=3 || $b=3){        $a++;        $b++;    }    echo $a.",".$b;</code>

返还值为1,1

why?
第一则中的or语法错了嘛?
wamp环境,php5.5.12

回复内容:

<code>    $a = 0;        $b = 0;            if($a=3 or $b=3){        $a++;        $b++;    }    echo $a.",".$b;</code>

返还值为4,1

<code>    $a = 0;        $b = 0;            if($a=3 || $b=3){        $a++;        $b++;    }    echo $a.",".$b;</code>

返还值为1,1

why?
第一则中的or语法错了嘛?
wamp环境,php5.5.12

<body>

1.首先,请查看php.net对所有运算符优先级顺序规定表:http://php.net/manual/zh/language.operators.precedence.php;
2.我们发现||大于=大于or(这里指运算符优先级),且=是右结合顺序;
3.因此,在第二段snippet中的if条件结合顺序应该是if($a=(3||($b=3))),因为php.net上面的链接文档又说了’Operator precedence and associativity only determine how expressions are grouped, they do not specify an order of evaluation. PHP does not (in the general case) specify in which order an expression is evaluated and code that assumes a specific order of evaluation should be avoided, because the behavior can change between versions of PHP or depending on the surrounding code.’,翻译一下就是说:运算符的优先级和结合性只是决定了表达式如何分组,却没有指定代码被如何解析执行。。。,所以这里的if条件并不能完全按照运算符的优先级和结合性来判断代码如何解析执行。

关注“PHP技术大全”微信公众号(phpgod),拿起手机,打开微信,轻松一扫下面的二维码,每天成长一点,成就大神就不远。

你以为if($a=3 || $b=3)if(($a=3) || ($b=3))

其实由于运算符优先级的原因,是if($a = ( 3 || ($b = 3) ) )
然后 3 || ($b = 3) 这一句,由于短路特性($b = 3)并没有执行,这句的返回值是布尔类型t

)本文来源gaodai.ma#com搞#代!码网_

搞代gaodaima码rue,返回给$a,echo出来是1,其自增值也不会改变。$b依然是0,自增成1。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于PHP语法中的 or 与 || 的问题。

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址