duk*_*vin 2 php pass-by-reference
通过引用传递:
<?php
$str = "test \n";
trim(&$str);
echo "-" . "$str" . "-";
?>
Run Code Online (Sandbox Code Playgroud)
输出是:
-test
-
Run Code Online (Sandbox Code Playgroud)
但是当我这样做的时候
<?php
$str = "test \n";
$str = trim($str);
echo "-" . "$str" . "-";
?>
Run Code Online (Sandbox Code Playgroud)
输出是:
-test-
Run Code Online (Sandbox Code Playgroud)
为什么我不能通过引用传递这个?
因为trim()不期望引用,因此不会修改传递给它的字符串.传递引用只有在函数需要时才有意义 - 然后你没有选择不传递引用,因为如果函数定义包含引用参数,那么重要.
你要做的是,很长一段时间以来,PHP中不推荐使用 call-time pass-by-reference .除此之外,即使它没有被弃用,它也只适用于实际修改参数的函数.
注意:函数调用上没有引用符号 - 仅在函数定义上.单独的函数定义足以通过引用正确传递参数.由于PHP 5.3.0中,你会得到一个警告说"呼叫时间传递通过引用"已经过时,当您使用
&在foo(&$a);.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |