php 字符替换 strtr, str_replace

str_replace

<?php
$from = [1,2,3,'b'];
$to = ['a','b','c','d'];
$word='zbb2';
echo str_replace($from, $to, $word);

按逻辑理解应该是
z -> z
b -> d
b -> d
2 -> b
进行mapping,但是结果却是 zddd,原因在于 str_replace 的重复执行性质
也就是说第一步实际上得出的结果是 zddb,但是经过检测发现还有可替换的值 b
再一次进行 b->d 的替换所以得到结果为 zddd

strtr

如果使用 strtr 进行替换

$arr = ['1' => 'A', '2' => 'B', '3' => 'C', 'B' => 'D');
$word = 'ZBB2';
echo strtr($word, $arr);

这样结果就是 'ZDDB',说明 strtr并不重复检测关键字是否存在,而是按照字符长度顺序执行,执行完成也就结束。

posted @ 2020-10-22 10:55  我听不见  阅读(116)  评论(0编辑  收藏  举报