2012-04-02 67 views
-1

我有一個陣列如何改變陣列格式

Array (
    [Hindi] => Array 
     (
      [0] => Array 
       (
        [Examinations] => 124 
       ) 

      [1] => Array 
       (
        [Assignment] => 124 
       ) 

      [2] => Array 
       (
        [Projects] => 124 
       ) 

     ) 

    [Punjabi] => Array 
     (
      [0] => Array 
       (
        [Examinations] => 0 
       ) 

      [1] => Array 
       (
        [Projects] => 124 
       ) 

     ) 

) 

等。但我需要以下格式按我的要求.Does有人有想法如何使一個數組這樣

Array (
     [Hindi] => Array 
      (
       [Examinations] =>124 
       [Assignment] => 124 
       [Projects] => 124 
       ) 

      ) 

任何人有知道如何做到這一點

感謝

+0

迭代當前陣列上(也許它的子排列,儘管'array_merge'可能只是正常工作),並建立新的一個... – 2012-04-02 09:41:17

+0

這怎麼辦我是新來的PHP不知道 – 2012-04-02 09:42:37

+1

然後閱讀一些文檔:關於[數組](http://php.net/manual/en/language.types.array.php)和['foreach'](http:// php.net/manual/en/control-structures.foreach.php)。 – 2012-04-02 09:43:36

回答

2

這應該是你需要的:

foreach ($array as $key => $value) 
    { 

    foreach ($value as $k => $v) 
    { 
     $new_array[$key][key($v)] = current($v); 
    } 

    } 
+0

+1(爲簡潔起見) – Obay 2012-04-02 09:56:19

1

你想轉換t他將原始數組轉換爲結果數組格式?嘗試這個。假設你原來的數組被稱爲$languages

$result = array(); 
foreach ($languages as $lang => $scores) { 
    foreach($scores as $score) { 
     foreach($score as $category => $number) { 
      if (!is_array($result[$lang]) { 
       $result[$lang] = array(); 
      } 
      array_push($result[$lang], array($category => $number)) 
     } 
    } 
} 

$result是你的新陣列。

但如果你想創建結果數組格式,但與前一個是結束了,你需要在這裏提供你正在使用產生前一個源代碼,所以我們可以幫助你改變它會生成正確的格式。

+0

+1爲可訪問的名稱; – MichaelRushton 2012-04-02 09:57:56

-1

這裏是您的解決方案:

<? 
$array = array (
     'Hindi' => array(
       array(
         'Examinations' => 124 
       ), 

       array(
         'Assignment' => 124 
       ), 

       array(
         'Projects' => 124 
       ) 

     ), 

     'Punjabi' => array(
       array(
         'Examinations' => 0 
       ), 

       array(
         'Projects' => 124 
       ) 

     ) 

); 

$resultingArray = array(); 

$currentArray = $resultingArray; 
foreach($array as $key => $value){ 
    $arrayPart = array(); 
    if(is_array($value)){ 
     foreach ($value as $innerArray){ 
      $arrayPart = array_merge($arrayPart, $innerArray); 
     } 
    } 
    $resultingArray[$key] = $arrayPart; 
} 

?> 
+0

爲什麼你改變了數組的輸入格式。 – 2012-04-02 10:47:29

+1

我沒有!我只是將你的var_dump轉換成了PHP數組。運行這段代碼,你會發現它可以滿足你的需求。 – 2012-04-02 11:09:08