关于数组的for循环结构是什么?

3
如何在取消数组元素后重新索引该数组:
echo "before deleting:<br>";
$countries[] = "Japan";
$countries[] = "Korea";
$countries[] = "china";

echo $a  = count($countries);
echo "<br>";

for($i= 0;$i < $a; $i++)
{
    echo "$countries[$i]<br>";
}

unset($countries[1]);
echo "<br>";      

使用unset函数后,计数器显示2,但下面的循环中未输出第二个国家名称“china”。

echo "<hr>After deleting:<br>";
echo $a = count($countries);
echo "<br>";

//below is my forloop
for($i=0;$i < $a; $i++)
{
    echo "$countries[$i]<br>";
}
</code>
2个回答

2

使用array_values()重新索引:

$countries = array_values($countries);

然而,只需使用foreach()来迭代所有的值:
foreach($countries as $country) {
    echo $country;
}

Snap!很高兴看到我没有偏离轨道 :-) - Kevin Nagurski
你今天在进行哪个旅程呢:)?咖啡之旅吗? - Rizier123
@Rizier123:还不确定,这是今天我还没有删除的第一个答案。 - AbraCadaver

2

改为

for($i=0;$i < $a; $i++)
{
    echo "$countries[$i]<br>";
}

使用

foreach ($countries as $country) {
    echo $country . '<br>';
}

foreach循环不会关注数组键(key),所以它可以很好地遍历。如果您真的想使用标准的for循环,请在此之前调用:$countries = array_values($countries);,这将有效地重置数组的键。


@JA21,不用客气。我现在很少使用标准的for循环了...我发现foreach更容易打,速度也更快 :-) - Kevin Nagurski
顺便提一下,如果你需要知道数组的当前键是什么,你可以这样做:foreach ($countries as $key => $country) { ... } - Kevin Nagurski
如果您喜欢收到的某个答案,请确保在答案旁边单击复选标记 :-) - Kevin Nagurski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接