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

标签 php

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

相关文章:

php - 如果不同行中的两列具有相同的值,则分组依据?

用于检查字符串是否来自单个脚本的 PHP 正则表达式

php - 如何在 PHP 中合并多个数组,但将值混合在一起 - 保留它们的顺序

php - 如何连接到另一个域上的 MySQL 数据库?

php - Yii zii.widgets.CDetailView - 将属性输出为 HTML 代码格式

php - 什么会导致 $_FILES ['file' ] ['name' ] 为空?

php - 在 mysql 查询中使用 PHP 表单

javascript - Chart.js 无法从 php 读取元素作为标签

php - MySQL PHP - fatal error ,查询在页面上失败但不是 PHPMyAdmin

php - AJAX "load more"按钮 : disappears once clicked 问题