确实搞复杂了,应该strtr就可以搞定了,当时只关注str_replace了,以为别无他法了,可以无视这段代码了。
function replace($string,$keyarray,$replacement,$i){ $result=''; if($i $strsegarray=explode($keyarray[$i],$string); foreach ($strsegarray as $index=>$strseg){ $x=$i+1; if($index==(count($strsegarray)-1)) $result=$result.replace($strseg,$keyarray,$replacement,$x); else $result=$result.replace($strseg,$keyarray,$replacement,$x).$replacement[$i]; } return $result; } else{ return $string; } } $string=' 键名 数组可以同时含有 integer 和 string 类型的键名,12345678 因为 php 实际并不区分索引数组和关联数组。如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。'; $keyarray=array('数组','integer','2345','键名'); $replacement=array('aaaa','bbbb','cccc','dddd'); echo replace($string,$keyarray,$replacement,0);
复制代码
