我想编写一个函数,允许我用数组中的连续值替换字符串中重复的标记,这样 WHERE name = ? and age ?
,array('joe', 32)
变为 Where name = joe and age = 32
。 (我知道变量绑定(bind)不应该“手动”完成;我正在尝试对传递给 Eloquent DB::select
语句的参数进行故障排除)。
我是这样写的:
function str_replace_array($search, array $replace, $subject ) {
foreach ( $replace as $replacement ) {
$subject = str_replace($search, $replacement,$subject,1);
}
return $subject;
}
但是 php 5.6.20 给我这个错误:
$ php -l str_replace_array.php
PHP Fatal error: Only variables can be passed by reference in str_replace_array.php on line 5
Errors parsing str_replace_array.php
我知道它是 str_replace()
函数,因为用虚拟函数替换它可以让它通过语法检查。虽然,没有一个变量与受让人和参数相同——但是有什么表明这在这个函数中不起作用吗?
manual entry并不表示任何参数都是通过引用传递的;它表示返回值,所有示例均显示赋值。
这是怎么回事?
最佳答案
这是由于 str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
的最后一个参数直接设置为 1
,你需要将它设置为某个变量,比如 $count
,因为它的值将被设置为执行的替换次数。所以改为:
..
$subject = str_replace($search, $replacement,$subject, $count);
..
关于php - `str_replace` 有什么特别之处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559010/