将具有相同元素值的数组组合在一起,并用逗号分隔所有元素 [英] Combine array with same element value and keep them all together, comma separated

查看:51
本文介绍了将具有相同元素值的数组组合在一起,并用逗号分隔所有元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个多维数组

    [0] => Array
        (
            [name] => Size
            [value] => XS,S,XL
        )    
    [1] => Array
        (
            [name] => Brand
            [value] => Adidas
        )    
    [2] => Array
        (
            [name] => Size
            [value] => XS,XL,L,M
        )    
    [3] => Array
        (
            [name] => Brand
            [value] => Nike
        )

我想要结果

[0] => Array
    (
        [name] => Size
        [value] => S,M,L,XS,XL
    )    
[1] => Array
    (
        [name] => Brand
        [value] => Adidas,Nike
    )

我正在尝试array_combinearray_merge甚至array_unique都没有成功

I'm trying to array_combine, array_merge and even array_unique with no success

推荐答案

您可以尝试-

$array = array(
'0' => array
    (
        'name' => 'Size',
        'value' => 'XS,S,XL',
    ),    
'1' => array
    (
        'name' => 'Brand',
        'value' => 'Adidas',
    ),    
'2' => array
    (
        'name' => 'Size',
        'value' => 'XS,XL,L,M',
    ),    
'3' => array
    (
        'name' => 'Brand',
        'value' => 'Nike',
    )
);

$temp = $new = array();
foreach($array as $val) {
    $temp[$val['name']][] = $val['value'];
}

foreach($temp as $key => $value) {
    // merge values, fetch unique, then merge again
    $values = implode(',', array_unique(explode(',', implode(',', $value)))); 
    $new[] = array('name' => $key, 'value' => $values); // store 
}

var_dump($new);

输出

array(2) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "Size"
    ["value"]=>
    string(11) "XS,S,XL,L,M"
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(5) "Brand"
    ["value"]=>
    string(11) "Adidas,Nike"
  }
}

演示

这篇关于将具有相同元素值的数组组合在一起,并用逗号分隔所有元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆