使用基于键的多维数组中的值替换字符串

时间:2014-08-21 17:47:47

标签: php arrays string replace multidimensional-array

我有一个带有多个数字的变量存储为字符串:

$string = "1, 2, 3, 5";

和包含其他存储值的多维数组:

$ar[1] = array('title#1', 'filename#1');
$ar[2] = array('title#2', 'filename#2');
$ar[3] = array('title#3', 'filename#3');
$ar[4] = array('title#4', 'filename#4');
$ar[5] = array('title#5', 'filename#5');

我的目标是根据相关的数组键,用$string数组中的相关切片替换$ar中的数字。上面的例子我应该得到:

$string = "title#1, title#2, title#3, title#5";

我尝试遍历$ar并在$string上执行str_replace,但$string的最终值始终是相关数组的最新标题。

foreach($ar as $key => $arr){
  $newString = str_replace($string,$key,$arr[0]);
}

如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:2)

你可以通过concat每次str_replace来做,或者你可以通过爆炸和连续来做。

尝试这样:

$string = "1, 2, 3, 5";
$arrFromString = explode(',', $string);
$newString = '';
foreach($ar as $intKey => $arr){
    foreach($arrFromString as $intNumber){
        if($intKey == $intNumber) {
            $newString .= $arr[0].',';
        }
    }
}
$newString = rtrim($newString,',');
echo $newString;

输出:

title#1,title#2,title#3,title#5

live demo

答案 1 :(得分:0)

您可以使用explode()implode()函数将$string中的数字作为数组获取,并将标题分别合并为字符串:

$res = array();
foreach (explode(", ", $string) as $index) {
     array_push($res, $ar[$index][0]);
}
$string = implode(", ", $res);
print_r($string);

会给你

title#1, title#2, title#3, title#5;