通过引用传递不会在php中工作

时间:2016-08-01 09:28:19

标签: php pass-by-reference

我正要制作一个过滤器帮助器,并通过引用传递基本替换功能来测试我的想法,它不会起作用!

<?php
$text ="hello world i am here !";

 function findandreplace(&$text, $search, $replaced)
 {

    return str_replace($search, $replaced, $text);

 }

print findandreplace($text,'e','E');
print "<br>";
print $text;

输出总是那样:

hEllo world i am hErE !
hello world i am here !

我尝试了一些事情,但我不会工作,所以我的错是什么。

1 个答案:

答案 0 :(得分:4)

您没有对传递的$text字符串进行任何更改,因为str_replace不会修改传入的字符串 - 它会收到传入值的副本,并返回结果。它 如果您将str_replace的结果分配给$text变量,它将按预期工作:

 $text ="hello world i am here !";

 function findandreplace(&$text, $search, $replaced)
 {

    $text =  str_replace($search, $replaced, $text); //<-- now it will work
    return $text;

 }

print findandreplace($text,'e','E');
print "<br>";
print $text;