gpt4 book ai didi

php - `str_replace` 有什么特别之处?

转载 作者:可可西里 更新时间:2023-10-31 22:52:12 26 4
gpt4 key购买 nike

我想编写一个函数,允许我用数组中的连续值替换字符串中重复的标记,这样 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com