PHP - 如果单个值等于多个选项

Mik*_*ick 3 php

所以我理解这一点 - 比较/检查值.然而,我正在搞乱,并注意到我所有测试的结果是相同的 - 其中一些我被教导(a)不起作用或(b)不正确.

注意,我正在运行PHP7.好的,我的观点.如果单个值等于多个选项之一,我能够实现相同的结果检查...

这些工作......为什么?不是我学习的方式.

if ($status == 'in-progress' || 'in-review')
// and even
if ($status == ('in-progress' || 'in-review')) // kind of similar to ASP.NET Razor
Run Code Online (Sandbox Code Playgroud)

我通常会重复检查,就像这样:if($stat == 'a' || $stat == 'b')或者甚至in_array()是基本相同的东西.

是第一个例子,对吗?如果没有,为什么它有效?或者这是不赞成的事情而不是实践 - 甚至可能是新事物?

Riz*_*123 6

首先明确==表示优先级高于||.这意味着你的两个if语句如下所示:

if (($status == 'in-progress') || 'in-review')
if ($status == ('in-progress' || 'in-review'))
Run Code Online (Sandbox Code Playgroud)

现在为你的第一个if语句,不管有什么值$status和结果($status == 'in-progress')是什么,因为你有一个OR并且在它之后'in-review'你的if语句总是为真,因为非空字符串是一个真值.

对于你的第二个陈述,这个部分('in-progress' || 'in-review') 从字面上下来TRUE || TRUE,其评估为TRUE.现在$status只需要保持一个真值,if语句就是真的.