PHP中str_replace函数使用问题:为何替换操作始终提示未完成?
问题解答
一、代码问题分析
你的代码存在三个核心问题,导致运行结果始终不符合预期:
str_replace的引用参数未加&:第四个参数$i用于接收替换次数,必须通过引用传递(变量前加&),否则$i不会被赋值,始终保持默认值0。- 替换次数判断逻辑错误:你的字符串里只有1个
developer,替换后$i的值为1,但你判断条件是$i>1,自然会进入else分支。作业要求只要发生替换就返回true,所以应该判断$i>0。 - 未按作业要求返回布尔值:作业明确要求函数返回
true或false,但你的代码仅输出提示文本,不符合需求。
修正后的代码如下:
$article = "i am php developer"; function check($article, $word, $new_word) { // 调整参数顺序以匹配作业描述的「字符串、单词」,同时保留替换目标词 str_replace($word, $new_word, $article, $i); // 判断是否发生替换并返回布尔值 $isReplaced = $i > 0; // 保留提示输出的同时返回结果 echo $isReplaced ? "replace is done" : "no replace is done"; return $isReplaced; } check($article, 'developer', 'magic');
二、关于社区用户态度的看法
部分老用户对新开发者态度激进,大多是因为他们觉得新人提问前没做足基础研究(比如没查官方文档、没搜索已有问题),认为这是在浪费社区资源。但直接踩信誉分的行为确实欠妥,社区本就应该是帮助新人成长的地方。不用太在意这类评价,专注解决自己的问题、逐步积累经验就好。
内容的提问来源于stack exchange,提问作者MohamedSalem
相关产品推荐
相关产品推荐

