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

Php 使用多维数组中基于键的值替换字符串,php,arrays,string,replace,multidimensional-array,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',

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

$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
上执行stru替换,但
$string
的最终值始终是相关数组中的最新标题

foreach($ar as $key => $arr){
  $newString = str_replace($string,$key,$arr[0]);
}
如何解决这个问题有什么建议吗


谢谢

您可以通过每次用concat替换
str\u来完成,也可以通过explode和concat来完成

试着这样做:

$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

您可以使用和函数以数组形式获取
$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;

好吧,在我的例子中,你的例子不是一个解决方案,因为你使用的是数组
$ar
中的值,而不是该数组的键来获得正确的标题,顺便说一句,哪一点可以是没有数字的“产品标题”。在哪一点上是离题的?我被困在一些我无法解决的问题上(我的代码没有像我预期的那样工作)。需要稍加修改才能得到字符串而不是数组的结果,但在我的情况下也可以。谢谢