在另一个数组的值内搜索数组中的键并替换

时间:2015-05-05 22:44:19

标签: php arrays

我有多种方法可以做到这一点。我有一个看起来像这样的数组:

$map=array(
'ABC'=>'first_three',
'DEF'=>'second_three',
'GHI'=>'third_three'
)

$info=array(
    array('x','XXABCXXXX','x','x','x'),
    array('x','XXXDEFXXXX','x','x','x'),
    array('x','XXXXXXXXXX','x','x','x'),
    array('x','XXXXXXXABC','x','x','x'),
    array('x','XXXXXXXXXX','x','x','x')
)

我想进行查找/替换,以便将数组中的第二个字符串与$ map中的键进行比较,如果找到任何键,则他们将使用$ map中的任何内容替换该键。

array('x','XXfirst_threeXXXX','x','x','x')

我想循环浏览$ info:

foreach ($info as $i){
    [something with $i[1] and $map]
}

最有效的方法是什么?它是否使用" in_array"?

2 个答案:

答案 0 :(得分:1)

需要$i引用&以这种方式使用:

foreach ($info as &$i){
    $i[1] = str_replace(array_keys($map), $map, $i[1]);
}

答案 1 :(得分:0)

foreach($info as $key => $i) {
  foreach($map as $k => $v) {
    // replace the key $k ("ABC") with the value $v ("first_three") in the 2nd element of $info, for each $key
    $info[$key][1] = str_replace($k, $v, $info[$key][1]);
  }
}