2013-08-24 85 views
0

我試圖不顯示循環內的特定字段,所以我需要得到所有字段類型的列表,所以我可以在if語句中使用它。不知道我該如何做到這一點?從循環外的foreach循環內的東西創建一個If語句?

foreach($this->sections as $k => $section){ 

    foreach($section['fields'] as $k => $type){ 

     //This makes a nice list of all the stuff I need 
     echo '<li>'.var_dump ($type['type']).'</li>'; 
    }  
     //Outside the loop doesn't dump all of the contents just some 
     echo '<li>'.var_dump ($type['type']).'</li>'; 

    if($type['type'] != 'switch'){ 

     //My stuff 

    } 

} 

這個想法是循環所有的字段類型,除了在if語句中聲明的一個特定類型。每個都是這樣我可以得到所有字段類型的列表。

回答

3

由於您可能已經體驗過您所建議的構造,因爲if語句將在循環結束後執行。


可以使用continue關鍵字來跳轉到下一個迭代,並跳過你不感興趣的領域。

foreach ($section['fields'] as $k => $type) { 
    if ($type['type'] != 'switch') { 
     continue; 
    } 

    // do stuff 
} 

http://php.net/manual/en/control-structures.continue.php

+0

是的,我正在讀上php.net。 。更多地考慮它開始有意義...顯然我從來沒有使用過繼續,我是否需要用我的foreach語句包裝我的主代碼?不是100%肯定的,但不會是那個循環我的「/ /做所有領域的東西」,而不是部分(在我的代碼中) –

+0

即使在循環外部,如果循環運行至少一次並且變量已創建。但它只能顯示最後一次迭代的價值。 – deceze

+0

$ fields從哪裏來?這是隨機的還是來自'$ section ['fields']'支架內的區域變成了變量?爲了清理自己,我試圖循環'$ this-> sections'並從'$ this-> sections'中取出所有的字段類型,並從循環中排除一個字段類型。 –