有没有办法比较PHP中的多个值

时间:2017-02-11 09:28:17

标签: php

如果($ value ['flagS'] =='是'& $ value ['flagE'] =='是'& $,我的代码会向我发送电子邮件,即使此声明不正确value ['flagL'] =='是'& $ value ['flagML'] =='是')请参阅下面的代码并协助,我哪里出错了

const

4 个答案:

答案 0 :(得分:1)

请小心,我不认为你的病情符合它应该做的事情。当您可能需要&时,使用单个&&bitwise operator,即logical operator

if($value['flagS'] == 'Yes'
   && $value['flagE'] == 'Yes'
   && $value['flagL'] == 'Yes'
   && $value['flagML'] == 'Yes'
) { ... }

现在将检查"是"的所有4个标志值(S,E,L,ML)。然后才返回真实。

答案 1 :(得分:0)

以更优化的方式编写它。

$keys_to_match = ['flagS', 'flagE', 'flagL', 'flagML'];
foreach($rows as  $key => $value) {

   if(in_array($key , $keys_to_match) && $value[$key] ==='Yes') {

     // ....
   }
}

答案 2 :(得分:0)

你应该使用&&如果条件

AND操作:

&安培; - >将执行按位AND操作,它只是基于操作       位值。 &安培;&安培; - >它将执行逻辑AND操作。这只是检查值        对或错。根据布尔值,它将评估        表达

答案 3 :(得分:0)

我曾经用位操作设计标志。

define("flagS", 1);
define("flagE", 2);
define("flagL", 4);
define("flagML", 8);
define("allFlags", 15); // join all flags (flagS | flagE | flagL | flagML)

它需要更少的空间,你可以很容易地检查标志,而无需昂贵的循环 如果设置了单个标志,请使用

if($storedFlags & flagS) {
    //Flag flagS is set
} else {
    // Flag is not set
}

如果设置了多个,请使用

$required = flagE | flagML;
if( ($storedFlags & $required) == $required) {
    // Flags flagE and flagML are set
} else {
    // No or only one flag is set
}

要检查是否全部设置,只需将all required替换为allFlags或15,如果标志数没有改变。