我倾向于发现在不使用引用的情况下使用foreach结构时,数组的某些元素缺失。
$array = array();
/* ... */
$array[] = 1;
$array[] = 2;
$array[] = 3;
/* ... */
print_r($array); /* print_r always shows all elements */
foreach ($array as $element) { /* missing elements */ }
foreach ($array as &$element) { /* does a fine job */ }
我的代码中有三次独立出现。修复很容易(添加&),但它听起来像PHP或我的设置中的错误...
是否有更多人遇到这种情况?有什么问题?
PHP 5.4.12
修改
案例:
$a = array();
$a[] = 1;
$a[] = 2;
$a[] = 3;
foreach ($a as &$e)
{
echo $e;
}
echo '<br>';
foreach ($a as $e)
{
echo $e;
}
输出:
123
122
答案 0 :(得分:0)
刚刚确认。
<?php
$x[]=1;
$x[]=2;
$x[]=3;
$x[]=4;
foreach($x as $y) {
var_dump($y);
}
?>
int(1)int(2)int(3)int(4)
答案 1 :(得分:0)
似乎这个问题在PHP ver中得到了解决。 5.6.10。
我有一个包含8个元素的数组。这是var_dump:
array(8){[0] =&gt; string(18)“lname是必需的。” [1] =&GT; string(18)“fname是必需的。” [2] =&GT; string(18)“需要发送电子邮件。” [3] =&GT; string(22)“password1是必需的。” [4] =&GT; string(22)“password2是必需的。” [5] =&GT; string(44)“名字必须是字母和数字。” [6] =&GT; string(43)“姓氏必须是字母和数字。” [7] =&GT; string(22)“无效的电子邮件地址”}
我使用以下代码打印出数组:
foreach($ _SESSION ['error']为$ error){
打印$错误。 “
\ n” 个;
}
我的MAMP localhost使用 PHP ver。 5.6.10 ,结果完美:
“lname是必需的。 fname是必需的。 需要电子邮件。 密码1是必需的。 密码2是必需的。 名字必须只是字母和数字。 姓氏必须只是字母和数字。 无效的电子邮件地址“
我的远程服务器使用 PHP ver。 5.3 ,在这种情况下,服务器仅打印第一个元素:
“lname是必需的。”
当我改变Taco建议的代码时(foreach($ _SESSION ['error']为&amp; $ error))ver。 5.3。也给出了良好(和预期)的结果。