【发布时间】:2022-01-03 13:40:27
【问题描述】:
我有一个替换功能,因为要替换的单词很多,我想做一个循环,从数据库表中提取要替换的单词。我尝试编写代码,但没有成功。
之前:
function replaceString ($content){
$w = str_replace("apple", "banana", $content);
$w = str_replace("orange", "pear", $content);
return $w;
}
之后:
function replaceString ($content){
$Fruits = $mysqli->query("SELECT * FROM Fruits ORDER BY id DESC");
while($row = mysqli_fetch_array($Fruits))){
$content = str_replace($row['word'], $row['replace'], $content);
}
return $content;
}
【问题讨论】:
-
实际发生了什么?您的查询是否有效?您的
$mysqli数据库对象是否在范围内?每次调用str_replace时都使用原来的$content调用它,所以忘记之前的所有替换,这对吗?我认为if()子句也不需要 - 只需使用while()循环。 -
if(while())应该是什么样的构造? while 循环没有“返回值”。if没有位置,删除它并只是循环。 -
"BEFORE" 版本不起作用,因为在函数的第二行你需要替换 $w 而不是 $content: $w = str_replace("orange", "pear", $w );
-
其实代码里没有“if”,我这里是加错的,为了不混淆,我把它去掉了。在任何情况下,代码都无法正常工作,函数不会出错,我只是不显示使用函数的字符串,实际上它返回空输出。
-
您必须用引号将键括起来,否则 PHP 将假定这些是常量并抛出警告
Use of undefined constant word - assumed 'word'。您应该在开发过程中真正启用所有错误。ini_set('display_errors', true); error_reporting(E_ALL);这样你会看到 PHP 抛出警告