通过引用传递:
<?php
$str = "test \n";
trim(&$str);
echo "-" . "$str" . "-";
?>
输出是:
-test
-
但是当我这样做时
<?php
$str = "test \n";
$str = trim($str);
echo "-" . "$str" . "-";
?>
输出是:
-test-
为什么我不能通过引用传递这个?
通过引用传递:
<?php
$str = "test \n";
trim(&$str);
echo "-" . "$str" . "-";
?>
输出是:
-test
-
但是当我这样做时
<?php
$str = "test \n";
$str = trim($str);
echo "-" . "$str" . "-";
?>
输出是:
-test-
为什么我不能通过引用传递这个?
因为trim()
不期望引用,因此不会修改传递给它的字符串。仅当函数需要一个引用时才传递引用才有意义 - 然后您无法选择不传递引用,因为函数定义是否包含引用参数很重要。
您正在尝试做的事情是,长期以来,PHP中不推荐使用调用时传递引用。除此之外,即使它没有被弃用,它也只适用于实际修改参数的函数。
注意:函数调用上没有参考符号 - 仅在函数定义上。仅函数定义就足以通过引用正确传递参数。
&
从 PHP 5.3.0 开始,当您使用in时,您将收到一条警告说“调用时传递引用”已被弃用foo(&$a);
。