我是PHP的初学者,我无法理解为什么这不起作用。
<?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,但它们仍然执行两次替换,最后我得到了这个输出:
'前臂,犊牛,胸部,胸部,犊牛,前臂非常适合训练!'
而不是:
'前臂,犊牛,胸部,股四头肌,肱三头肌,二头肌很适合训练!'
...为什么?!
答案 0 :(得分:3)
the manual说的是:
如果通过,则将设置为执行的替换次数。
此外,函数签名使用&
符号表示函数写入您传递给它的变量:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
简而言之,这是一份报告,而不是一种设定。
答案 1 :(得分:2)
每次替换都在下一次执行之前发生。
第二和第四次替换的类似问题。 &#34; 1&#34;你传递给str_replace并没有做任何事情。
如果您只想要替换第一个实例,请考虑使用preg_replace。
答案 2 :(得分:0)
第四个参数(来自manual)......
<强>计数强>
如果通过,则将设置为执行的替换次数。
所以不是要做的金额,而是金额。
作为替代方案,请尝试......
$body1 = strtr($body,
['Chest'=>'Quadriceps','Calves' => 'Triceps',
'Forearms' => 'Biceps', 'Biceps' => 'Forearms',
'Triceps' => 'Calves', 'Quadriceps' => 'Chest'
] );
哪个输出
Forearms, Calves, Chest, Quadriceps, Triceps, Biceps are great to train!