遇到一个小问题,并想知道是否有围绕它的“最佳实践”方式。Foreach和未设置()
所以我刚刚得知:“一个php的foreach将会在整个数组上执行,不管在迭代中测试下一个值,它会迭代偏移量,但是这个值将是空值 - Kevin Peno Dec 22 '09 at 21:31“from How do you remove an array element in a foreach loop?
这是我的第一部分搞乱了。我用foreach遍历数组。这是一个搜索函数,所以我删除了我刚刚搜索的元素,所以当循环再次运行它的减号元素时。
我不想重新索引,如果可能的话,尽管如果我必须我可以。
Array
(
[0] => Array
(
[0] => a
[1] => aa
[2] => aaa
)
[1] => Array
(
[0] => b
[1] => bb
[2] => bbb
)
[2] => Array
(
[0] => c
[1] => cc
[2] => ccc
)
[3] => Array
(
[0] => d
[1] => dd
[2] => ddd
)
)
foreach($array as $key=>$value) {
$searchresult[] = search function returns various other keys from array
foreach($searchresult as $deletionid) {
unset($array[$deletionid]);
}
}
所以在第一次循环,它使用$数组[0]很明显,但在$ SearchResult所可能返回4,5,6,7。所以这些密钥从$ array中删除。
然而,foreach循环仍然遍历这些循环,并给了我一堆空阵列。
我的确读过How does PHP 'foreach' actually work?,我弄明白了。
感谢
你可以在迭代时删除想要的项目一个if子句 – Fabio
@Fabio是怎么回事?我只是添加了一个if(空($ array))语句,并且至少删除了所有空数组。我想我更感兴趣的是使它不会迭代那些因为它们未被设置。或者这只是一种怪癖。 – TheEditor
你需要在第一阶段删除什么? – Fabio