Combine array with same element value and keep them all together, comma separated

为君一笑 提交于 2019-12-19 10:52:33

问题


I have a Multi-dimensional 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
        )

i want result as

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

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


回答1:


You can try this -

$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);

Output

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"
  }
}

Demo



来源:https://stackoverflow.com/questions/41390761/combine-array-with-same-element-value-and-keep-them-all-together-comma-separate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!