$test = array(1, 2, 3, 4, 5);
foreach($test as $element)
{
echo $element;
$element = next($test);
echo $element;
}
这将在PHP 5.2.0中生成输出“122334455” 输出“13243545”在PHP 5.3.3中生成
如何通过控制迭代器最有效地重现5.3.3中5.2.0的输出?
这可能是一个错误,因为迭代器在foreach中的5.2中工作,但在5.3的foreach中没有。
答案 0 :(得分:2)
这似乎是与PHP相关的错误。您可以使用更具说明性的“for”循环:
$c = count($test);
for($i=0; $i < $c; $i++) {
echo $test[$i];
if(isset($test[$i+1])) {
echo $test[$i+1];
} else {
echo $test[$i];
}
}
答案 1 :(得分:1)
我的尝试:
$i = 1;
foreach($test as $element)
{
echo $element;
if (isset($test[$i])) {
$element = $test[$i];
echo $element;
}
$i++;
}
这也有效,但内存效率低下:
$test = array(1, 2, 3, 4, 5);
$test2 = $test;
foreach($test as $element)
{
echo $element;
$element = next($test2);
echo $element;
}
答案 2 :(得分:0)
不知道你在问什么..无论如何:
echo array_shift($test);
foreach($test as $v) {
echo $v.$v;
}
打印:原始问题中提到的122334455