4
 $search  = array('A', 'B', 'C', 'D', 'E');
 $replace = array('B', 'C', 'D', 'E', 'F');
 $subject = 'A';
 $trans = array('A' => 'B','B'=>'C','C'=>'D','D'=>'E','E'=>'F');
 echo str_replace($search, $replace, $subject);
 echo "<br/>";
 echo strtr($subject,$trans);

 Output: F
         B

当使用 str_replace 我得到 F,使用 strtr 我得到 B

据我所知,对于str_replace:它从左到右替换,所以A被替换为B而没有标记位置已经被替换,所以再次找到被C替换的B,依此类推以获得值F。

对于 strtr:我用 B 替换 A 并记住它已在该位置替换,

我得到这个正确吗?有人可以向我解释吗?

4

1 回答 1

0

对,那是正确的。str_replace()按顺序进行替换,而strtr()遍历字符串中的每个字符并且只替换一次。

于 2012-08-20T04:52:33.557 回答