PHP:通过引用传递
参考传递:PHP:通过引用传递,php,pass-by-reference,Php,Pass By Reference,参考传递: <?php $str = "test \n"; trim(&$str); echo "-" . "$str" . "-"; ?> 但当我这么做的时候 <?php $str = "test \n"; $str = trim($str); echo "-" . "$str" . "-"; ?> 为什么我不能通过引用传递它?因为trim()不需要引用,因此不会修改传递给它的字符串。传递引用只有在函数需要引用的情况下才有意义,并且您没有不传递引
<?php
$str = "test \n";
trim(&$str);
echo "-" . "$str" . "-";
?>
但当我这么做的时候
<?php
$str = "test \n";
$str = trim($str);
echo "-" . "$str" . "-";
?>
为什么我不能通过引用传递它?因为trim()
不需要引用,因此不会修改传递给它的字符串。传递引用只有在函数需要引用的情况下才有意义,并且您没有不传递引用的选择,因为如果函数定义包含引用参数与否,那么重要的是什么
很长一段时间以来,您试图做的是,通过引用传递调用时间。除此之外,即使它没有被弃用,它也只适用于实际修改参数的函数
注意:函数调用上没有参考符号-仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从PHP5.3.0开始,当您在foo(&$a)中使用&
时,您将收到一条警告,指出“通过引用传递调用时间”是不推荐的代码>
请参阅参考资料:
<?php
$str = "test \n";
trim(&$str);
echo "-" . "$str" . "-";
?>
如果您阅读本手册,您将了解到trim()
不需要字符串的引用,而是string
本身的值。让我们检查一下这方面的说明:
注意:函数调用上没有参考符号-仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从PHP5.3.0开始,您将收到一条警告,指出“通过引用传递调用时间”已被弃用
请看签名:
string trim ( string $str [, string $charlist ] )
关于$str的任何内容都不会通过引用传递。所以不会。函数trim
将只使用您的输入生成输出,但不会修改它-它无论如何不能修改,因为$str
不是通过引用传递的。为什么他们不赞成在php中使用它?因为它毫无意义。为了使CTPBR有用,调用方需要了解函数实现的细节。根据函数的编写方式,它甚至可能产生意想不到的副作用。
string trim ( string $str [, string $charlist ] )