PHP:只能通过引用传递变量

Edw*_* Yu 9 php pass-by-reference

我在第57行收到此错误: $password = str_replace($key, $value, $password, 1);

据我所知,我只传递变量.这是一些更多的背景:

$replace_count = 0;
foreach($replacables as $key => $value)
{
    if($replace_count >= 2)
        break;
    if(strpos($password, $key) !== false)
    {
        $password = str_replace($key, $value, $password, 1);
        $replace_count++;
    }

}
Run Code Online (Sandbox Code Playgroud)

imm*_*tin 7

您不能传递1的常量,修复是将其设置为变量.

更改:

$password = str_replace($key, $value, $password, 1);
Run Code Online (Sandbox Code Playgroud)

至:

$var = 1
$password = str_replace($key, $value, $password, $var);
Run Code Online (Sandbox Code Playgroud)

更新:更改为在注释中的反馈中声明方法调用之外的变量.


new*_*cct 7

通过1那里毫无意义.(为什么不通过42,或-5?)的第四个参数str_replace用于传递信息反馈给你.该功能不使用变量的原始价值可言.那么,如果没有使用,那么传递内容的重点是什么(即使是允许的话),并且你不会使用发回给你的新值?该参数是可选的; 只是不要传递任何东西.

  • 确切地说,这是一个常见的错误,认为第 4 个参数是设置替换次数。正如文档所说:`count:如果通过,这将被设置为执行的替换次数。` (3认同)