php foreach array_merge问题和困惑
本文介绍了php foreach array_merge问题和困惑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
代码:
$a = array('a' => array('a'));
$b = array('b' => array('b'));
foreach ($b as $key => &$item) {
$item[] = 'd';
}
$a = array_merge($b, $a);
$b['b'][] = 'c';
print_r($a);
print_r($b);
结果:
Array
(
[b] => Array
(
[0] => b
[1] => d
[2] => c
)
[a] => Array
(
[0] => a
)
)
Array
(
[b] => Array
(
[0] => b
[1] => d
[2] => c
)
)
我的困惑是为什么合并后,对$b的操作,影响到了$a。
知道的大神,请解惑一下,谢谢!
解决方案
其实我感觉你把print_r改成var_dump就可以看出来了
array (size=2)
'b' => &
array (size=3)
0 => string 'b' (length=1)
1 => string 'd' (length=1)
2 => string 'c' (length=1)
'a' =>
array (size=1)
0 => string 'a' (length=1)
array (size=1)
'b' => &
array (size=3)
0 => string 'b' (length=1)
1 => string 'd' (length=1)
2 => string 'c' (length=1)
变量b指向的一个引用类型,所以改了b的值,a中的b的值也随着变
这篇关于php foreach array_merge问题和困惑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文