簡體   English   中英

將具有相同元素值的數組組合在一起,並用逗號分隔所有元素

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

我有一個多維數組

    [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沒有成功

你可以試試這個-

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

演示版

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM