$arr = array(
"a" => "1"
"b" => "2"
"c" => "3"
"d" => "4"
"e" => "5"
"f" => "6"
);
$str = array(
'xxxxx{a}xxxxx{b}xxxx{f}xxxx',
'xxxxx{b}xxxxx{c}xxxx{d}xxxx',
'xxxxx{a}xxxxx{d}xxxx{e}xxxx',
);
我自己想到的办法是
foreach($str as $v)
{
foreach($arr as $ke=>$va)
{
$v = str_replace('{'.$ke.'}', $va, $v);
}
$newStr[] = $v;
}
return $newStr;
感觉这样每次都要把 $arr 全部遍历一遍不好...
大佬们可以帮忙指点一下吗...
4 回答
![?](http://img1.sycdn.imooc.com/545863b500014e4602200220-100-100.jpg)
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
不想循环的话可以试下这样:
$arr = array(
'{a}' => '1',
'{b}' => "2",
'{c}' => "3",
'{d}' => "4",
'{e}' => "5",
'{f}' => "6",
);
$str = array(
'xxxxx{a}xxxxx{b}xxxx{f}xxxx',
'xxxxx{b}xxxxx{c}xxxx{d}xxxx',
'xxxxx{a}xxxxx{d}xxxx{e}xxxx',
);
$newStr = implode('|||', $str);
$newStr = strtr($newStr, $arr);
$newStr = explode('|||', $newStr);
print_r($newStr);
另外提个tips: 纯字符串使用单引号比双引号效率会快那么一点点
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
噜噜哒
TA贡献1784条经验 获得超7个赞
不知道你要的是不是这个结果...
$result = array_map(function($item) use ($arr) {
return str_replace(array_keys($arr), array_values($arr), $item);
}, $str);
- 4 回答
- 0 关注
- 384 浏览
添加回答
举报
0/150
提交
取消