如何更改数组格式

时间:2012-04-02 09:40:10

标签: php arrays multidimensional-array

我有一个数组

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
                )

        )

)

等等。但我需要按照我的要求使用以下格式。是否有人知道如何制作这样的数组

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

            )

等等

任何人都知道如何做到这一点

由于

3 个答案:

答案 0 :(得分:2)

这应该是你需要的:

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

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

  }

答案 1 :(得分:1)

您是否尝试将原始数组转换为生成的数组格式?试试这个。假设您的原始数组名为$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是您的新阵列。

但是,如果您正在尝试创建生成的数组格式,但最终会使用前一个格式,那么您需要在此处提供用于生成前一个的源代码,以便我们可以帮助您更改它这样它就能生成正确的格式。

答案 2 :(得分:-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;
}

?>