Pac*_*ier 5 php foreach xdebug php-internals
NikiC在另一个帖子中说:
在[foreach]迭代之前,
$array"软复制"用于foreach.这意味着没有实际的副本,但只有zval的refcount$array增加到2.
但是,我的测试代码显示了不同的结果:
$array = array(0, 1, 2);
xdebug_debug_zval('array'); // refcount=1, is_ref=0
// so far so good
foreach ($array as $key => $value) {
xdebug_debug_zval('array'); // refcount=3, is_ref=0
} // why is refcount 3 instead of 2?
Run Code Online (Sandbox Code Playgroud)
只需查看代码,我们最多可以看到两个数组变量.
为什么要引用引用计数3?
运行2后为什么不引用refcount foreach?
小智 1
xdebug_debug_zval() 正在查看 $array 变量而不是 $key 变量。如果您将代码更改为:
foreach ($array as $key => $value) {
echo $key . " : " . $values . "<br>";
//xdebug_debug_zval('array');
}
Run Code Online (Sandbox Code Playgroud)
将返回数组的正确值。我没有 xdebug 功能,所以我无法测试你在那里输入的值。