if条件与php中数组的foreach循环



是否有任何方法可以阻止这些重复的数据。

if ($employees_csa[0]->csa_taken == 2 && $employees_csa[1]->csa_taken == 2 && $employees_csa[2]->csa_taken == 2 && $employees_csa[3]->csa_taken == 2 && $employees_csa[4]->csa_taken == 2 && $employees_csa[5]->csa_taken == 2 && $employees_csa[6]->csa_taken == 2 && $employees_csa[7]->csa_taken == 2) {
echo "data";
}

我试过for key range(0 , 8)像这个

foreach (range(0, count($employees_csa)) as $number) {

if ($employees_csa[$number]->csa_taken == 2) {
echo "data";

}
}

我试过那种方法,但没有成功。我想用另一种方法写出简单的条件。

您可以开箱即用地循环数组:

$all_taken = true;
foreach ($employees_csa as $employee) {
if ($employee->csa_taken != 2) {
$all_taken = false;
break;
}
}
if ($all_taken) {
echo 'data';
}

另一种方法是arrayreduce((,但当已经有答案时,这不会中止循环:

$all_taken = array_reduce($employees_csa, function ($all_taken, $employee) {
if ($employee->csa_taken != 2) {
return false;
}
return $all_taken;
}, true);
if ($all_taken) {
echo 'data';
}

或者,您可以这样做,使用array_column来提取所有csa_en属性,然后如果它们都与array_unique((相同,则减少到1项,然后使用reset((检查相同的值是否为预期的数字2。

$csa_taken = array_column($employees_csa, 'csa_taken');
if (reset($csa_taken) === 2 && count(array_unique($csa_taken)) === 1) {
echo 'data';
}

可重用功能版本:https://3v4l.org/4kYiE

一个简单的for循环可以在中工作

$condition_met=true;
for($i=0;$i<8;++$i){
if( $employees_csa[$i]->csa_taken != 2){
$condition_met=false;
break;
}
}
if($condition_met===true){
//success
}
else{
//fail
}

一个简单的方法可以像一样完成

foreach($employees_csa as $singleEmployee){
if($singleEmployee->csa_taken == 2){
echo "data";
}
}

最新更新