【发布时间】:2021-11-23 08:33:27
【问题描述】:
有人可以解释一下为什么 php 函数 str_replace 不能正确地将数字替换为字符串吗?
$number = [1,5,10,15];
$text = ["one", "five", "ten", "fifteen"];
$replaced_1 = str_replace($number, $text, 1);
$replaced_5 = str_replace($number, $text, 5);
$replaced_10 = str_replace($number, $text, 10);
$replaced_15 = str_replace($number, $text, 15);
echo $replaced_1."<br>"; // one
echo $replaced_5."<br>"; // five
echo $replaced_10."<br>"; // one0
echo $replaced_15; // onefive
带引号的相同结果:$number = ["1","5","10","15"]
【问题讨论】:
-
预期结果是什么?如果您期望
ten而不是one0:替换从数组中的第一个元素开始,并将1映射到one -
@NicoHaase 将号码
10替换为ten而不是one0 -
问题是您正在执行替换的顺序。您的
1将首先被替换。您的数组中有三个1s。str_replace()不在乎1是10或15的一部分。 -
感谢您的解释
-
先按最高排序数组,也可以使用 NumberFormatter 3v4l.org/SWqo1 获取数字的单词,这样你就不需要第二个数组了
标签: php str-replace