跳到主要内容

函数的参数不能是对变量的引用,除非在php.ini中把____设为on?

参考答案:

在 PHP 中,关于函数的参数是否可以是对变量的引用,主要取决于 PHP 的配置以及所使用的 PHP 版本。然而,你提到的描述可能有些误导,因为 PHP 本身就支持通过引用传递参数给函数。

但是,你可能是想问的是关于 allow_call_time_pass_reference 这个配置选项。在早期的 PHP 版本中(PHP 4.0.4 到 PHP 4.4.0),allow_call_time_pass_reference 这个选项控制是否允许在函数调用时使用按引用传递。如果这个选项被设置为 off,则不能使用按引用传递参数。然而,从 PHP 4.4.0 开始,这个选项已经被废弃,并且在 PHP 5.0.0 及以后的版本中,它已经被移除。

在现代的 PHP 版本中(PHP 5.0.0 及以上),你不需要在 php.ini 中设置任何特殊的选项来使用按引用传递参数。你只需在函数定义时,在参数前面加上 & 符号即可:

function modifyArray(&$array) {
    $array[] = 'new value';
}

$myArray = array('existing value');
modifyArray($myArray);
print_r($myArray); // 输出:Array ( [0] => existing value [1] => new value )

在上面的例子中,modifyArray 函数通过引用接收 $array 参数,所以任何在函数内部对 $array 的修改都会影响到原始数组。

因此,现代的 PHP 开发中,你不需要关心 allow_call_time_pass_reference 这个选项,因为它已经不再存在。相反,你应该确保你正确地使用按引用传递参数,并且理解按引用传递的含义和可能的副作用。