变换多维数组结构

时间:2020-09-23 12:09:34

标签: php arrays

我从mySQL咨询中获得了一个带有日期的数组。但是,数据采用以下格式:

Array (   
[ano_quarantine] => Array ( [0] => 2020 [1] => 2019 [2] => 2018 [3] => 2017 [4] => 2016 )  
[quarantine] => Array ( [0] => 61 [1] => 1 [2] => 1 [3] => 2 [4] => 2 ) )

是否可以将数组更改为以下结构?

Array (   
0: {ano_quarantine: "2020", quarantine: 61}   
1: {ano_quarantine: "2019", quarantine: 1}   
2: {ano_quarantine: "2018", quarantine: 1}  
3: {ano_quarantine: "2017", quarantine: 2}
4: {ano_quarantine: "2016", quarantine: 2}

2 个答案:

答案 0 :(得分:1)

如果您的输入数据的值集数量可能有所不同,我会寻求通用解决方案。您可以使用array_keys找到该数组的所有键,然后遍历第一个子数组的键,将外部数组的键与该键索引的数组的每一列组合在一起:

$result = array();
$keys = array_keys($array);
foreach (array_keys($array[$keys[0]]) as $key) {
    $result[] = array_combine($keys, array_column($array, $key));
}
print_r($result);

Array
(
    [0] => Array
        (
            [ano_quarantine] => 2020
            [quarantine] => 61
        )
    [1] => Array
        (
            [ano_quarantine] => 2019
            [quarantine] => 1
        )
    [2] => Array
        (
            [ano_quarantine] => 2018
            [quarantine] => 1
        )
    [3] => Array
        (
            [ano_quarantine] => 2017
            [quarantine] => 2
        )
    [4] => Array
        (
            [ano_quarantine] => 2016
            [quarantine] => 2
        )
)

Demo on 3v4l.org

答案 1 :(得分:0)

是的,您可以使用合并功能,也可以使用for来将两个字段的值分配给具有“ ano_quarantine”和“ quarantine”字段的新数组。

相关问题