当前位置: 首页 > 知识库问答 >
问题:

为什么foreach将refcount增加2而不是1?

韦繁
2023-03-14

NikiC在另一条线上说:

$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?

为什么refcount3

为什么在运行foreach之后,refcount2没有出现?

共有1个答案

薛欣荣
2023-03-14

xdebug_debug_zval()查看的是$array变量,而不是$key变量。如果将代码更改为:

foreach ($array as $key => $value) {
    echo $key . " : " . $values . "<br>";
    //xdebug_debug_zval('array');

}

将返回数组的正确值。我没有xdebug函数,所以无法测试您在其中放入了什么值。

 类似资料:
  • 导出const ProductCard=({product})=>{const{deleteProduct,addToCart}=useContext(ProductContext) }

  • 问题内容: 这是从这里获取的:http : //tour.golang.org/#5 结果: 问题答案: 使用java /scala将会得到完全相同的结果,该函数“返回朝Y X后的下一个表示值。” 如本主题所述 float64 不能表示所有16位数字。 例如,如果x = 0.12345678901234567,使用,您可以看到附近的float64值为… 1234565,… 1234566和… 12

  • 问题内容: 为什么 初始空间 大于“ 10”的“ 2”? 我在latin1和utf8英语归类中都尝试过: 我知道它与类型有关,因为当它被强制转换时,它可以按预期工作: 这里到底发生了什么? 编辑: 以上所有操作都是在Fedora 13中使用8.4.8完成的。但是我只是在Centos 6中使用9.04进行了测试,结果相同: 数据库清单 新编辑: 这是为了进一步混淆: 问题答案: 我认为Postgre

  • 问题内容: 为什么评估为无?我预计 问题答案: 这是因为append不返回任何内容(= )。

  • 我试图理解背后的动机。如果已经存在类型类和,为什么有必要呢? 诚然,的实例是具体的类型,而的实例需要一个类型参数。(有关有用的解释,请参见Monoid vs MonadPlus。)但是你不能重写任何类型的约束吗 作为和的组合? 从。它的实施是: 我只能使用和实现它: 有人能澄清和之间的真正区别吗?

  • 问题内容: 我已经在Android代码中使用FloatBuffers一段时间了(从一些opengles教程中复制了它),但是我无法确切地理解此构造是什么以及为什么需要它。 例如,我在许多人的代码和android教程中看到了以下代码(或类似代码): 就我所知,这似乎是冗长和混乱的,我只是说它们只是一个浮点数的包装而已。 问题: 与任何其他类型的float集合或简单数组相反,这种类型的类(ByteBu