PHP str_replace数字与其他数字

时间:2013-07-10 09:23:36

标签: php string

我的数字字符串未正确替换。

我希望替换后的输出为9876543210,但似乎并非如此。

我做错了什么?

<?php
$numbers = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$code = array('9', '8', '7', '6', '5', '4', '3', '2', '1', '0');

$pre = '0123456789';
echo $pre . " ==> " . str_replace($numbers, $code, $pre);
?>

2 个答案:

答案 0 :(得分:5)

这会产生输出0123443210,因为带有数组的str_replace将在迭代$numbers时开始替换先前的匹配

对于像这样的单个字母转置,请改用strtr

 $encoded = strtr($pre, "0123456789", "9876543210");

答案 1 :(得分:1)

解释时间有点长,但让我告诉你发生了什么。对于数组中的每个元素,它将从字符串的开头替换所有内容。我们为$number定义 N ,为$code定义 C ,为$result定义 R

N       C       R
0       9       9123456789
1       8       9823456789
2       7       9873456789
3       6       9876456789
4       5       9876556789
5       4       9876446789
6       3       9873443789
7       2       9823443289
8       1       9123443219
9       0       0123443210

因此,您应该使用Paul提供的解决方案strtr()