我有一個大陣列。我將如何循環瀏覽?
在這陣我有(其中包括許多其他的東西)的產品列表:
$data['product_name_0'] = '';
$data['product_desc_0'] = '';
$data['product_name_1'] = '';
$data['product_desc_1'] = '';
該陣列由第三方提供的(所以我必須在這個無法控制)。
目前還不知道陣列中有多少產品。
什麼是乾淨的方式來循環所有的產品?
我不想使用foreach
循環,因爲它也會遍歷(大)數組中的所有其他項目。
我不能使用for
循環,因爲我還不知道數組包含多少產品。
我可以做一個while循環:
$i = 0;
while(true) { // doing this feels wrong, although it WILL end at some time (if there are no other products)
if (!array_key_exists('product_name_'.$i, $data)) {
break;
}
// do stuff with the current product
$i++;
}
有沒有這樣做上面的更清潔的方式?
做while(true)
看起來對我來說很愚蠢,或者這種方法沒有錯。
或者還有另一種方法?
現在很時髦! +1 – PeeHaa
這個解決方案是最乾淨的imo,不知道爲什麼當foreach做這個工作時會選擇一個while循環控制。 –
不錯。我喜歡這個。雖然問題。速度方面,'preg_grep'如何執行?它基本上循環遍歷整個集合來運行正則表達式,然後再次循環匹配?不過,如果你不能保證連續的項目,這是一個勝利者。 –