鍍金池/ 問(wèn)答/PHP  HTML/ 數(shù)組里面有多個(gè)值,但只需要匹配替換其中的幾個(gè),如何寫效率點(diǎn)?

數(shù)組里面有多個(gè)值,但只需要匹配替換其中的幾個(gè),如何寫效率點(diǎn)?

$arr = array(
  "a" => "1"
  "b" => "2"
  "c" => "3"
  "d" => "4"
  "e" => "5"
  "f" => "6"
);

$str = array(
    'xxxxx{a}xxxxxxxxx{f}xxxx',
    'xxxxxxxxxx{c}xxxxdhjh5p9xxxx',
    'xxxxx{a}xxxxxl9bzd11xxxx{e}xxxx',
);

我自己想到的辦法是


foreach($str as $v)
{
    foreach($arr as $ke=>$va)
    {
        $v = str_replace('{'.$ke.'}', $va, $v);
    }
    $newStr[] = $v;
}
return $newStr;

感覺(jué)這樣每次都要把 $arr 全部遍歷一遍不好...

大佬們可以幫忙指點(diǎn)一下嗎...

回答
編輯回答
巫婆

不想循環(huán)的話可以試下這樣:

$arr = array(
  '{a}' => '1',
  '' => "2",
  '{c}' => "3",
  'rhbx99z' => "4",
  '{e}' => "5",
  '{f}' => "6",
);

$str = array(
    'xxxxx{a}xxxxxxxxx{f}xxxx',
    'xxxxxxxxxx{c}xxxxxfpv37dxxxx',
    'xxxxx{a}xxxxxf7r1dnfxxxx{e}xxxx',
);

$newStr = implode('|||', $str);
$newStr = strtr($newStr, $arr);
$newStr = explode('|||', $newStr);
print_r($newStr);

另外提個(gè)tips: 純字符串使用單引號(hào)比雙引號(hào)效率會(huì)快那么一點(diǎn)點(diǎn)

2018年2月6日 10:04
編輯回答
笑浮塵

不知道你要的是不是這個(gè)結(jié)果...

$result = array_map(function($item) use ($arr) {
    return str_replace(array_keys($arr), array_values($arr), $item);
}, $str);
2017年7月23日 16:13
編輯回答
冷咖啡

多看文檔
str_replace

clipboard.png

2018年4月22日 21:47
編輯回答
你好胸
array_walk($str, function(&$v, $k) use ($arr){
    $v = strtr($v, $arr);
});
2018年1月31日 16:57