php 合并多维数组中相同的值

2024-12-07 06:21:52
推荐回答(4个)
回答1:

$arr = array(
    array(
        array(
"stocknotifyId" => 1,
"sku" => '13809_BL_37',
"email" => 'huang@aaa.com'
),
        array(
"stocknotifyId" => 3,
"sku" => '13809_BL_37',
"email" => 'hrheve@dfwef.com'
),
        array(
"stocknotifyId" => 5,
"sku" => '13809_BL_37',
"email" => 'dfsfs@dfsf.com'
)
),
    array(
array(
"stocknotifyId" => 2,
"sku" => '13809_B_39',
"email" => 'huang@aaa.com'
)
),
array(
array(
"stocknotifyId" => 4,
"sku" => '13809_BL_39',
"email" =>'hrheve@dfwef.com'
)
)
);


$re = array();

foreach($arr as $a) {
foreach ($a as $v) {
$tmp_v = $v;
unset($tmp_v['email']);
if(isset($re[$v['email']])) {
$re[$v['email']][] = $tmp_v;
}else{
$re[$v['email']] = array($tmp_v);
}

}
}

print_r($re);

 


Array    
(    
   [huang@aaa.com] => Array    
       (    
           [0] => Array    
               (    
                   [stocknotifyId] => 1    
                   [sku] => 13809_BL_37    
               )    
           [1] => Array    
               (    
                   [stocknotifyId] => 2    
                   [sku] => 13809_B_39    
               )    
       )    
   [hrheve@dfwef.com] => Array    
       (    
           [0] => Array    
               (    
                   [stocknotifyId] => 3    
                   [sku] => 13809_BL_37    
               )    
           [1] => Array    
               (    
                   [stocknotifyId] => 4    
                   [sku] => 13809_BL_39    
               )    
       )    
   [dfsfs@dfsf.com] => Array    
       (    
           [0] => Array    
               (    
                   [stocknotifyId] => 5    
                   [sku] => 13809_BL_37    
               )    
       )    
)

回答2:

//原数组
$arr = array(
    array(
        array('stocknotifyId'=>1,'sku'=>'13809_BL_37','email'=>'huang@aaa.com'),
        array('stocknotifyId'=>3,'sku'=>'13809_BL_37','email'=>'hrheve@dfwef.com'),
        array('stocknotifyId'=>5,'sku'=>'13809_BL_37','email'=>'dfsfs@dfsf.com'),
        array(
            array('stocknotifyId'=>2,'sku'=>'13809_B_39','email'=>'huang@aaa.com')
        ),
        array(
            array('stocknotifyId'=>4,'sku'=>'13809_B_39','email'=>'hrheve@dfwef.com')
        )
    )
);

echo "
";   print_r($arr);

//把$arr转换成统一格式的二维数组
$array = array();
foreach($arr as $val){
    foreach($val as $v){
        foreach($v as $vop){
            if(is_array($vop)){
                $array[$vop['stocknotifyId']] = $vop;
            }else{
                $array[$v['stocknotifyId']] = $v;
            }
        }
    }
}
ksort($array);
echo "";  print_r($array);

//转换成想要的数组
$array_res = array();
foreach($array as $val){
    $array_res[$val['email']][] = $val;
}
echo ""; print_r($array_res);


//我已经测试过了,可以转换成的

回答3:

$s=Array( Array( Array([stocknotifyId] => 1,[sku] => '13809_BL_37',[email] => 'huang@aaa.com'), Array([stocknotifyId] => 3,[sku] => '13809_BL_37',[email] => 'hrheve@dfwef.com'), Array([stocknotifyId] => 5,[sku] => '13809_BL_37',[email] => 'dfsfs@dfsf.com') ), Array( Array([stocknotifyId] => 2,[sku] => '13809_B_39',[email] => 'huang@aaa.com') ) Array( Array([stocknotifyId] => 4,[sku] => '13809_BL_39',[email] =>'hrheve@dfwef.com') ));
// 怎么写,合并后变为:
foreach ( $s[0][0] as $t )
{
$ret['email']=array( ['stocknotifyId'] => $t['stocknotifyId'],['sku'] =>$t['sku'] );
}

回答4:

我先给试试啊。能解决的话我就给贴出来。