簡體   English   中英

php elseif條件在foreach中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM