首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在str_replace中的第四个参数不能工作?

为什么我在str_replace中的第四个参数不能工作?
EN

Stack Overflow用户
提问于 2018-06-12 14:16:01
回答 3查看 181关注 0票数 1

我是PHP的初学者,我不明白为什么这不起作用。

代码语言:javascript
复制
<?php
$count = 1;
$body = 'Biceps, Triceps, Quadriceps, Chest, Calves, Forearms are great to train!';
$body = str_replace('Chest', 'Quadriceps', $body);
$body = str_replace('Calves', 'Triceps', $body);
$body = str_replace('Forearms', 'Biceps', $body);
$body = str_replace('Biceps', 'Forearms', $body, $count);
$body = str_replace('Triceps', 'Calves', $body, $count);
$body = str_replace('Quadriceps', 'Chest', $body, $count);
echo $body;
?>

对于后三个替换,虽然第四个参数(据说它定义了替换的数量)设置为1,但它们仍然执行两次替换操作,最后得到以下输出:

“前臂,小腿,胸部,胸部,小腿,前臂都是很棒的训练工具!”

而不是:

“前臂,小腿,胸部,四头肌,三头肌,二头肌都很适合训练!”

...why?!

EN

回答 3

Stack Overflow用户

发布于 2018-06-12 14:20:36

手册说的是:

如果通过,这将被设置为执行的替换数。

此外,函数签名还使用&符号来指示函数写入传递给它的变量:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

简而言之,这是一份报告,而不是一个背景。

票数 3
EN

Stack Overflow用户

发布于 2018-06-12 14:20:23

每个替换都在执行下一个替换之前进行。

  • 在第三个替代方案中,你将“前臂”改为“二头肌”。
  • 在第四次替换中,当您更改时,您将更改它。 二头肌改为前臂。

第二代和第四代也有类似的问题。传递给替换的"1“什么也不做。

如果只想替换第一个实例,可以考虑使用替换

票数 2
EN

Stack Overflow用户

发布于 2018-06-12 14:19:23

第四个参数(来自手册).

计数 如果通过,这将被设置为执行的替换数。

所以不是要做多少,而是要做多少。

作为一种选择,试着.

代码语言:javascript
复制
$body1 = strtr($body, 
    ['Chest'=>'Quadriceps','Calves' => 'Triceps', 
        'Forearms' => 'Biceps', 'Biceps' => 'Forearms',
        'Triceps' => 'Calves', 'Quadriceps' => 'Chest'
    ] );

哪种输出

代码语言:javascript
复制
Forearms, Calves, Chest, Quadriceps, Triceps, Biceps are great to train!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50819389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档