2012-04-02 52 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