我有一个大阵列。我将如何循环浏览?
在这阵我有(其中包括许多其他的东西)的产品列表:
$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'如何执行?它基本上循环遍历整个集合来运行正则表达式,然后再次循环匹配?不过,如果你不能保证连续的项目,这是一个胜利者。 –