gpt4 book ai didi

php - &Array() - 更新数组后最后一行以 & 符号为前缀

转载 作者:行者123 更新时间:2023-12-01 23:46:44 25 4
gpt4 key购买 nike

我试图直接更新数组的某些值。这是完美的工作。我正在使用以下方法:

foreach( $items as &$item ) {
if( $criteria == 'correct' ) {
// update array
$item['update_me'] = 'updated';
}
}

所以我现在有一个名为 $items 的更新数组。

但是,我遇到的问题是,当这个数组输出到屏幕时(通过另一个 foreach 循环),数组的最后一行丢失了。

如果我通过 var_dump( $items ) 打印整个数组;方法中,我注意到每一行都以 Array(9) 为前缀。然而最后一行以 &Array(9) 为前缀 - 请注意前面的 & 符号。我确信这很重要!但我不确定这意味着什么。为什么它只应用于数组中的最后一行?我该如何摆脱它?

来自评论:

array(6) { 
[0]=> array(9) {
["item_id"]=> string(4) "1"
["item_description"]=> string(9) "blah blah"
["quantity"]=> string(1) "4"
["unit_cost"]=> string(4) "5.00"
["subtotal"]=> string(4) "20.00"
}
[1]=> &array(9) {
["item_id"]=> string(4) "2"
["item_description"]=> string(9) "blah blah"
["quantity"]=> string(1) "1"
["unit_cost"]=> string(4) "5.99"
["subtotal"]=> string(4) "5.99"
}
}

最佳答案

循环后必须取消设置 $item。正确代码:

foreach( $items as &$item ) {
if( $criteria == 'correct' ) {
// update array
$item['update_me'] = 'updated';
}
}
unset($item);
var_dump 结果中的

& 符号指定这是引用。您可以使用 xdebug_zval_dump() 函数检查它:

xdebug_zval_dump($item)

您会看到 is_ref=true。在 PHP 中,这意味着有另一个变量指向同一个 zval 容器(什么是 zval?请参阅此处 http://php.net/manual/en/internals2.variables.intro.php )。如果您在循环中使用 &,则必须始终在循环后取消设置引用,以避免难以检测的错误。

关于php - &Array() - 更新数组后最后一行以 & 符号为前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9498484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com