2016-12-30 21 views
1

をカンマ区切り、一緒にそれらすべてを保つ私は多次元配列Iはarray_combineにしようとしている 同じ要素の値を持つ配列を結合し、

として、私はなりたい

[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 
     ) 

array_merge持っていますさらにarray_uniqueは成功しません。

+0

:: gorupBy http://ouzo.readthedocs.io/en/latest/utils/arrays.html#groupby –

+1

はこれです宿題に関する質問?私はこれのために疑問に思っているhttp://stackoverflow.com/questions/41391462/combine-array-with-same-element-value-comma-seperated。たぶんあなたはクラスメイトです;) –

答えて

4

これは試すことができます -

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

Demo

+0

ありがとう、このコードは完璧に動作します。 –

関連する問題