为什么PHP有时会改变数组的最后一个元素?
我有一个数组:
Array
(
[0] => a_
[1] => b_
[2] => c_
[3] => d_
)
当我尝试打印出所有的emenets时。输出是:
a_
b_
c_
c_
完整代码是:
<?
$a = array('a', 'b', 'c', 'd');
foreach ($a as &$value)
$value = "{$value}_";
print_r($a);
foreach ($a as $value) {
echo "$value\n";
}
为什么?
答案 0 :(得分:10)
在第二个循环中使用不同的变量名称或在第一个循环后取消设置$ value将解决此问题。
$a = array('a', 'b', 'c', 'd');
foreach ($a as &$value) {
$value = "{$value}_";
}
unset($value);
print_r($a);
foreach ($a as $value) {
echo "$value\n";
}
答案 1 :(得分:1)
看起来像php弄乱了你的例子中的指针地址:
你不能这样写:
<?php
$a = array('a', 'b', 'c', 'd');
for ($i = 0; $i < count($a); $i++)
$a[$i] = "{$a[$i]}_";
print_r($a);
foreach ($a as $value) {
echo "$value\n";
}
?>