我是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,但它们仍然执行两次替换操作,最后得到以下输出:
“前臂,小腿,胸部,胸部,小腿,前臂都是很棒的训练工具!”
而不是:
“前臂,小腿,胸部,四头肌,三头肌,二头肌都很适合训练!”
...why?!
发布于 2018-06-12 14:20:36
手册说的是:
如果通过,这将被设置为执行的替换数。
此外,函数签名还使用&符号来指示函数写入传递给它的变量:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
简而言之,这是一份报告,而不是一个背景。
发布于 2018-06-12 14:20:23
每个替换都在执行下一个替换之前进行。
第二代和第四代也有类似的问题。传递给替换的"1“什么也不做。
如果只想替换第一个实例,可以考虑使用替换。
发布于 2018-06-12 14:19:23
第四个参数(来自手册).
计数 如果通过,这将被设置为执行的替换数。
所以不是要做多少,而是要做多少。
作为一种选择,试着.
$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!https://stackoverflow.com/questions/50819389
复制相似问题