PHP的foreach和for之间的迭代差异

米奇

我可以使用foreach遍历PHP数组,但不能使用for循环:

这不起作用:

for($j = 0; $j < sizeof($jobsFilterA); $j++) {
    echo $j . $jobsFilterA[$j] . "<br>";
}

这样做:

foreach($jobsFilterA as $job) {
    echo $job . "<br>";
}

我有5个不同的数组,其中一些简单地从数据库提取中构建,其他的然后通过删除特定索引进行修整。

感觉到我由于输入了unset函数而刚得到空索引。

我可以删除未设置的索引,还是重建数组的正确方法?

提前致谢!

尝试以不同的方式遍历多个不同的数组。

代码在上面。

for循环中的未设置索引会引发未定义的偏移量异常/错误。

最后,这5个数组需要回显到表中。我一直通过这样的for循环来这样做:

/*
*                   Echo data into a table
*/
echo '<tbody>';
for($i=0; $i < sizeof($jobsFilterA); $i++){
    echo "<tr><td>" . strtoupper(substr($custLastNames[$i], 0, 4)) . "</td>";
    echo "<td width='100'>" . $jobsFilterA[$i] . "</td>";
    echo "<td>" . $waxDueDates[$i] . "</td>";
    echo "<td>" . $dayDifferences[$i] . "</td>";
    echo "<td>" . $revisedETAs[$i] . "</td></tr>";
}
echo '</tbody>'

这就是为什么我希望可以重组数组,以便它们的数据以对齐方式/连续性进行索引。

乔尼克斯

如果您使用unset了数字序列(取消设置最后一个索引的情况除外),则for将会失败,因为您将访问不再存在的键(并将收到警告)。

例如,如果您有一个数组['a', 'b', 'c', 'd']并且未设置索引2,则结果为[0 => 'a', 1 => 'b', 3 => 'd'],但是for循环不知道该值,因此您的代码仍会检查$jobsFilterA[2]何时$j为is 2如果您确实想使用for,则可以使用例如重置密钥array_values,这将使您可以使用[0 => 'a', 1 => 'b', 2 => 'd']现有的密钥for

如果您只想检查$jobsFilterA其他数组中的相同索引,则可以使用另一种选择foreach($jobsFilterA as $i => $job)那么您可以访问例如$waxDueDates[$i]where$i与当前迭代相同的索引$jobsFilterA也有其他各种方法可以做到这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章