PHP:str_replace() 中的 "... variables can be passed by reference"?

标签 php pass-by-reference str-replace

我创建了一个函数来打印一个包含变量的prepared-statement-sql-string,基于我在另一个StackOverflow question中找到的内容.

这是我的代码:

foreach($params as $idx => $param) {
    if ($idx == 0) continue;
    $sql = str_replace('?', "'" . $param . "'", $sql, 1);
}
printError($sql);

当我运行它时,我得到: fatal error :第 3 行只能通过引用传递变量。但是当我使用

$sql = preg_replace('/\?/', "'". $param . "'", $sql, 1);

对于第 3 行,它工作正常。

知道为什么吗?

最佳答案

最后一个参数 count 是通过引用传递的。您可以在 http://us.php.net/str_replace 的描述中看到这一点变量前面有一个 &

这意味着您不能在那里使用文字 1。你必须这样做:

$sql = str_replace('?', "'" . $param . "'", $sql, $count);
echo $count;

您现在会在屏幕上显示更换了多少个实例。

关于PHP:str_replace() 中的 "... variables can be passed by reference"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842366/

相关文章:

javascript - 在现有脚本中包括使用正则表达式映射方法的 .replace 函数

php - 另一种 str_replace() (更严格)

PHP 命名空间覆盖 Use 语句

php - Mysql Running Total off 一张表

PHP:检查对象/数组是否是引用

python - 如何在Python中分配新数组而不是构建指针

pass-by-reference - 如何通过引用机器人框架关键字来传递参数?

PHP 良好实践 - 参数过多的方法

php - PHP 联系表单中的换行符

python 从文件中删除行