[英]Php elseif condition in foreach
我在foreach外觀中遇到有關if / elseif條件的問題。 我一遍又一遍地搜索,並且真的沒有想法。 所以我有這個數組:
數組(
[0] => stdClass Object
(
[title] => main
[value] => value1
)
[1] => stdClass Object
(
[title] => other
[value] => value2
)
[2] => stdClass Object
(
[title] => second
[value] => value3
)
[3] => stdClass Object
(
[title] => other
[value] => value4
)
[4] => stdClass Object
(
[title] => other
[value] => value5
)
)
如您所見,obj0具有title => main,而obj2具有title => second,其余的“ titles”設置為other。
我有這個foreach:
foreach ($objects as $object):
if($object->title == 'second') {
//this value is rarely added, so it must have a "priority" and be showed
echo '<span></span>';
} elseif($object->title == 'main') {
//i mostly want to show this, but not if $object->title has the value 'second'.
echo '<div></div>';
}
endforeach;
此循環返回我不需要的“ span”和“ div”。 我無法僅顯示title =“>” second“(如果有的話),而title =”> main“僅在” second“不存在的情況下顯示。 因此,要么顯示跨度,要么顯示div。
希望我解釋得很好,如果沒有,我道歉! 非常感謝您,我非常感謝您的幫助!
馬呂斯
如果其中一個可能出現在數組的任何位置上(即main
可能出現在second
數組之前(視情況而定)),則必須在決定要顯示的內容之前循環整個數組:
$main = $second = FALSE;
foreach ($objects as $object):
if($object->title == 'second') {
$second = TRUE;
break; // Added as @PeterKrejci pointed out
} elseif($object->title == 'main') {
$main = TRUE;
}
endforeach;
if($second) {
echo '<span></span>';
} elseif($main) {
echo '<div></div>';
}
如果second
總是出現在main
之前,那么只需幾個break
:
foreach ($objects as $object):
if($object->title == 'second') {
echo '<span></span>';
break;
} elseif($object->title == 'main') {
echo '<div></div>';
break;
}
endforeach;
Foreach遍歷該數組中的所有條目,因此您必須在第一次匹配后將其中斷,可以使用break;
之后echo
跳出foreach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.