$a = "89,90";
$arr = array( 'a_89' => '我们的,我的','a_90' => '大汽车,我的','a_97' => 'ggggg','a_98' => 'hfghfg' );
$temp = explode(',', $a);
$tem = array();
foreach ($temp as $key => $v) 
{
$tem[] = 'a_'.$v;
}
$b = array();
foreach ($tem as $key => $value) 
{
$b[]= explode(',',$arr[$value]);
// $b[] = $arr[$value];
}
$c = array();
foreach ($b as $key => $value) 
{
foreach ($value as $key => $val) {
$c[] = $val;
}
}
$temp = join(',',array_unique($c));
var_dump($tem, $b ,$c, $temp);

解决方案 »

  1.   


    $str='89,90';
    $arr=array(
    'a_89'=>'我们的,我的',
    'a_90'=>'大汽车,我的',
    'a_97'=>'ggggg',
    'a_98'=>'hfghfg' 
    );
    $a=explode(',',$str);
    $b=array();
    foreach($a as $k=>$v){
        $item=explode(',',$arr["a_$a[$k]"]);
        foreach($item as $k_k=>$v_v){
            $b[]=$v_v;
        }
        
    }
    $b=array_unique($b);
    foreach($b as $k=>$v){
        if($k==1) echo ',';
        echo $v;
    }
    我们的,我的大汽车
      

  2.   


    echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
    $a = '89,90';
    $arr = array(
    'a_89' => '我们的,我的',
    'a_90' => '大汽车,我的',
    'a_97' => 'ggggg',
    'a_98' => 'hfghfg'
    );$ids = explode(',', $a);
    $result = array();
    foreach($ids as $id){
    if(isset($arr['a_'.$id])){
    array_push($result,explode(',',$arr['a_'.$id]));
    }
    }$str = '';
    $data = array();
    foreach($result as $val){
    $tmp = '';
    foreach($val as $v){
    if(!in_array($v, $data)){
    array_push($data, $v);
    $str = $tmp!=''? $str.','.$v : $str.$v;
    $tmp = $v;
    }
    }
    }echo $str;
    我们的,我的大汽车
      

  3.   

    用字符串89,90查找数组中a_89,a_90;合并其值和去相同的,最终得到字符串“我们的,我的大汽车”
    這不是你的需求嗎,是你自己需求錯了。我们的,我的,大汽车 可以這樣寫,更簡單。echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
    $a = '89,90';
    $arr = array(
        'a_89' => '我们的,我的',
        'a_90' => '大汽车,我的',
        'a_97' => 'ggggg',
        'a_98' => 'hfghfg'
    );
     
    $ids = explode(',', $a);
    $result = '';
    foreach($ids as $id){
        if(isset($arr['a_'.$id])){
    if($result==''){
            $result = $arr['a_'.$id];
    }else{
    $result .= ','.$arr['a_'.$id];
    }
    }
    }$str = implode(',',array_unique(explode(',', $result)));echo $str;
    我们的,我的,大汽车
      

  4.   

    其实上边各位的代码改改就能满足新的要求  我来写个新的实现方式 效率可能低点
    <?php$str = '89,90';$array = array( 'a_89' => '我们的,我的','a_90' => '大汽车,我的', 'a_97' => 'ggggg', 'a_98' => 'hfghfg' );$filters =array();$target = preg_replace_callback('/\d+/',function($match) use($array,&$filters){    if(!empty($array['a_'.$match[0]])){        $originals = array_unique(explode(",",$array['a_'.$match[0]]));        foreach($originals as $key=>$original){              if(in_array($original,$filters)){
                      unset($originals[$key]);
                  }else{
                      $filters[] = $original;
                  }
            }        return  implode(',',$originals);    }    return $match[0];},$str);var_dump($target);?>
    string(26) "我们的,我的,大汽车"
      

  5.   

    a = array('a_89' => '我们的,我的', 'a_90' => '大汽车,我的', 'a_97' => 'ggggg', 'a_98' => 'hfghfg' );
    $s = '89,90';
    $p = '/' . join('|', explode(',', $s)) . '$/';
    $t = preg_grep($p, array_keys($a));
    $r = array();
    foreach($t as $k) {
      $r = array_merge($r, explode(',', $a[$k]));
    }
    $r = array_unique($r);
    echo join(',', $r);我们的,我的,大汽车