2016-01-19 26 views
-3
Array 
(
    [0] => Array 
     (
      [Handle] => example-t-shirt 
      [Title] => Example T-Shirt    
      [Vendor] => Acme 
      [Type] => Shirts 
     ) 

    [1] => Array 
     (
      [Handle] => example-t-shirt 
      [Title] => 1 
      [Vendor] => 2 
      [Type] => 3 
     ) 

    [2] => Array 
     (
      [Handle] => example-t-shirt 
      [Title] => 4 
      [Vendor] => 5 
      [Type] => 6 
     ) 

) 

的價值觀我有這樣的陣列,我想將其轉換像像手柄或標題陣列的如何合併數組

Array 
(
    [Handle] => example-t-shirt,example-t-shirt,example-t-shirt 
    [Title] => Example T-Shirt,1,4 
    [Vendor] => Acme,2,5 
    [Type] => Shirts,3,6 
) 

一件事鍵也沒有固定這些也是動態的。 thanx提前

+0

這是陣列的轉型。你可以顯示代碼嗎?看起來你可以使用兩個嵌套的'foreach'循環和'.join()'來做到這一點。 –

+1

你可以改述*一個更多的數組的關鍵像句柄或標題也不固定這些也是動態*?我看起來很不清楚 – Guiroux

+0

以及你到目前爲止所嘗試過的? –

回答

1

你需要生成它作爲一個陣列的第一件事:

<?php 
    $mainArray = array(
     array(
      "Handle" => "example-t-shirt", 
      "Title" => "Example T-Shirt", 
      "Vendor" => "Acme", 
      "Type" => "Shirts" 
     ), 
     array(
      "Handle" => "example-t-pant", 
      "Title" => "Example T-Pant", 
      "Vendor" => "Meca", 
      "Type" => "Pants" 
     ) 
    ); 
    $finalArray = array(
     "Handle" => array(), 
     "Title" => array(), 
     "Vendor" => array(), 
     "Type" => array() 
    ); 
    foreach ($mainArray as $current) 
     foreach ($current as $key => $value) 
      $finalArray[$key][] = $value; 
?> 

後來,每一個在$finalArray應該加入。

foreach ($finalArray as $key => $value) 
    $finalArray[$key] = implode(", ", $value); 

所以你的最終代碼將是:

<?php 
    $mainArray = array(
     array(
      "Handle" => "example-t-shirt", 
      "Title" => "Example T-Shirt", 
      "Vendor" => "Acme", 
      "Type" => "Shirts" 
     ), 
     array(
      "Handle" => "example-t-pant", 
      "Title" => "Example T-Pant", 
      "Vendor" => "Meca", 
      "Type" => "Pants" 
     ) 
    ); 
    $finalArray = array(
     "Handle" => array(), 
     "Title" => array(), 
     "Vendor" => array(), 
     "Type" => array() 
    ); 
    foreach ($mainArray as $current) 
     foreach ($current as $key => $value) 
      $finalArray[$key][] = $value; 
    foreach ($finalArray as $key => $value) 
     $finalArray[$key] = implode(", ", $value); 
?> 

輸出

Array 
(
    [Handle] => example-t-shirt, example-t-pant 
    [Title] => Example T-Shirt, Example T-Pant 
    [Vendor] => Acme, Meca 
    [Type] => Shirts, Pants 
) 

小提琴:http://codepad.viper-7.com/8LFSZk

+0

數組鍵不固定不確定每次鍵都是句柄,標題或供應商這些動態取決於用戶導入的csv文件的數據。 –

+0

@VJ。這適用於動態密鑰。嘗試,如果它的工作,接受答案。 ':)' –

0

這裏是array_walk_工作示例遞歸

$mainArray = array(
     array(
      "Handle" => "example-t-shirt", 
      "Title" => "Example T-Shirt", 
      "Vendor" => "Acme", 
      "Type" => "Shirts" 
     ), 
     array(
      "Handle" => "example-t-pant", 
      "Title" => "Example T-Pant", 
      "Vendor" => "Meca", 
      "Type" => "Pants" 
     ) 
    ); 

$final = array(); 

array_walk_recursive($mainArray, function($item, $key) use (&$final){ 
    $final[$key] = isset($final[$key]) ? $item .', '. $final[$key] : $item; 
}); 

var_dump($final); 
+0

它適合我。 thanx lucian –

0

試試這個:

<?php 
$temp = array(
    array(
      "Handle" => "example-t-shirt", 
      "Title" => "Example T-Shirt",   
      "Vendor" => "Acme", 
      "Type" => "Shirts" 
     ), 

    array(
      "Handle" => "example-t-shirt", 
      "Title" => 1, 
      "Vendor" => 2, 
      "Type" => 3 
     ), 

    array(
      "Handle" => "example-t-shirt", 
      "Title" => 4, 
      "Vendor" => 5, 
      "Type" => 6 
    ) 
); 

$result = array(); 

foreach($temp as $t){ 
    if (is_array($t)){ 
    foreach ($t as $k=>$r){ 
     if(array_key_exists($k,$result)){ 
      $result[$k] .= ','.$r; 
     } else { 
      $result[$k] = $r; 
     } 
    } 
    } 
} 
echo '<pre>'; 
print_r($result); 
?> 

DEMO