繁体   English   中英

PHP数组结构变化

[英]PHP array structure change

这不应该让我感到困惑,但我正在寻求解决:

array:3 [▼
  "subject" => array:2 [▼
        0 => "math"
        1 => "english"
  ]
 "grade" => array:2 [▼
      0 => "a"
      1 => "b"
  ]
  "received" => array:2 [▼
      0 => "2017"
      1 => "2016"
  ]
]

到这个:

array:2 [▼
  "0" => array:3 [▼
    "subject" => "math"
    "grade" => "a"
    "received" => "2017"
  ]
  "1" => array:3 [▼
    "subject" => "english"
    "grade" => "b"
    "received" => "2016"
  ]
]

尝试以几种不同的方式循环遍历,但似乎从未获得我想要的结果,任何帮助将不胜感激!

$keys = array_keys($array);
$result = array_map(
    function (...$values) use ($keys) { return array_combine($keys, $values); }, 
    ...array_values($array)
);

本质上是这样,但重复性较低:

array_map(
    function ($subject, $grade, $received) {
        return [
            'subject' => $subject,
            'grade' => $grade, 
            'received' => $received
        ];
    },
    $array['subject'],
    $array['grade'],
    $array['received']
)

有关更多说明,请参见手册中的array_map...

简单版本:

$arr1 = array(...);
$arr2 = array();

foreach ($arr1 as $k => $v) {
    foreach ($v as $x => $y) {
        $arr2[$x][$k] = $y;
    }
}

但是,如果数组元素不存在,则应添加条件,然后创建条件,否则可能会出现错误,具体取决于您的PHP配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM