gpt4 book ai didi

php - 为什么这种使用数组引用调用 PHP 函数的较短方式会导致不同的结果?

转载 作者:行者123 更新时间:2023-12-02 22:22:12 25 4
gpt4 key购买 nike

如果函数 my_func 定义为:

function my_func(&$arr) {
array_push($arr, 0);
array_push($arr, 1);
array_push($arr, 2);
array_push($arr, 3);
array_push($arr, 4);
}

如果我按如下方式调用 my_func,则结果符合预期:

$test_array = array();
my_func($test_array);
print_r($test_array);

结果:

Array(    [0] => 0    [1] => 1    [2] => 2    [3] => 3    [4] => 4)

I was thinking that I could shorten this code somewhat by calling my_func as follows:

my_func($test_array = array());
print_r($test_array);

但是,结果发生了变化:

Array()

为什么这个较短的代码片段会导致不同的结果?

最佳答案

您不是通过引用传递变量,而是表达式的值。

如果您要启用所有错误,您会看到以下消息:

Strict Standards: Only variables should be passed by reference in 

赋值的值是赋值本身。传递给 my_func 的正是该值(数组的副本)。

PHP documentation on the matter更强烈地说:

No other expressions should be passed by reference, as the result is undefined.

结论:只传递变量 ($x, $x[0], $x->a),从函数返回的新对象或引用一个需要引用的函数。

关于php - 为什么这种使用数组引用调用 PHP 函数的较短方式会导致不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554881/

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