【发布时间】:2020-01-05 21:19:51
【问题描述】:
我可以使用 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'],但你的forloop 不知道,所以当$j 为2 时你的代码仍然检查$jobsFilterA[2]。如果你真的想使用for,您可以使用例如重置键array_values. -
如果您只想检查其他数组中
$jobsFilterA中的相同索引,另一个选项是foreach($jobsFilterA as $i => $job),那么您可以访问例如$waxDueDates[$i]其中 $i 是与$jobsFilterA的当前迭代相同的索引。还有其他各种方法可以做到这一点。 -
@Jonnix 这两个 cmets 的组合几乎就是答案。你应该发布...
-
好点。完成。
标签: php