这是我的代码:
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza2 = explode(" ",$pizza);
//echo count($pizza2);
for($i = 0; $i<count($pizza2); $i++)
{//echo "<b>$i</b>";
echo "Array #".$i." is: <b>".$pizza2[$i]. "</b> ";
unset($pizza2[$i]);
}
但是我得到的输出只有第三部分......为什么会这样?我想要输出到第6页
答案 0 :(得分:2)
这是因为您在for循环中执行count($pizza2)
并且一旦取消设置该值,其长度也会在每个循环中减少。
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza2 = explode(" ",$pizza);
//echo count($pizza2);
$len = count($pizza2);
for($i = 0; $i<$len; $i++)
{//echo "<b>$i</b>";
echo "Array #".$i." is: <b>".$pizza2[$i]. "</b> ";
unset($pizza2[$i]);
}
答案 1 :(得分:1)
使用php foreach控制结构,这是一种迭代数组的简单方法,
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza2 = explode(" ",$pizza);
foreach($pizza2 as $key=>$piece){
echo "Array #".$key." is: <b>".$piece. "</b> ";
unset($pizza2[$key]);
}
答案 2 :(得分:1)
这段代码为您提供所需的输出,只需修改一行
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza2 = explode(" ",$pizza);
//echo count($pizza2);
$Count = count($pizza2);
for($i = 0; $i<$Count; $i++)
{//echo "<b>$i</b>";
echo "Array #".$i." is: <b>".$pizza2[$i]. "</b> ";
unset($pizza2[$i]);
}
答案 3 :(得分:1)
这是一个合乎逻辑的问题。
这一行:
unset($pizza2[$i]);
每次使用unset时,都会减少数组的长度。 所以在第四次迭代中它有数组计数== 3和$ i == 3,所以它从循环中退出。
在取消设置数组之前,需要将计数转换为变量,然后在循环中使用该变量。
像这样:
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza2 = explode(" ",$pizza);
print_r($pizza2 );
$len = count($pizza2);
for($i = 0; $i<$len; $i++)
{
//echo "<b>$i</b>";
echo "Array #".$i." is: <b>".$pizza2[$i]. "</b> ";
unset($pizza2[$i]);
}
答案 4 :(得分:1)
循环停止的原因是每次循环运行时数组$ pizza2的count()都会改变。因此,for语句的条件在每个循环中都会发生变化,当它达到3时,您的数组现在更短,因此满足条件并且循环停止。 当$ i达到3时,数组已经缩短为只有三个元素。这将证明正在发生的事情:
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza2 = explode(" ",$pizza);
for($i = 0; $i<count($pizza2); $i++)
{
echo "Array #".$i." is: <b>".$pizza2[$i]. "</b> ";
unset($pizza2[$i]);
echo "pizza2 has ".count($pizza2)." elements";
}
要解决此问题,您可以获取数组的初始长度并存储它:
$length = count($pizza2);
for($i = 0; $i<$length; $i++)
{//etc... as before
您还可以使用foreach()进行简化:
foreach ($pizza2 as $key => $value){
echo "Array #" . $key . " is: " . $value ."<br/>";
}
答案 5 :(得分:1)
您需要将count($pizza2)
放入某个变量,例如:$count
。它会保留数据的原始大小,因为unset($pizza2[$i])
会缩小$pizza2
的大小。