PHP:关联数组到数值数组

时间:2018-12-11 14:03:02

标签: javascript php arrays

我有以下问题:

我有一个二维数组,其中包含一些数据,第一个索引包含“年”,第二个索引中包含一个带值的范围。

这是一个如何通过print_r()解析常规数据的示例。

Array
(
    [2017] => Array
        (
            [0] => 215
            [1] => 182
            [2] => 149
            [3] => 159
            [4] => 176
            [5] => 151
            [6] => 221
            [7] => 185
            [8] => 178
            [9] => 191
            [10] => 265
            [11] => 304
        )

    [2016] => Array
        (
            [0] => 162
            [1] => 179
            [2] => 162
            [3] => 201
            [4] => 169
            [5] => 148
            [6] => 139
            [7] => 139
            [8] => 149
            [9] => 187
            [10] => 264
            [11] => 229
        )
}

在这种情况下效果很好。我正在使用来自PHP的json_encode()JSON.parse()将该数组发送到JavaScript。

但是,在某些情况下,效果还不够好。

[2015] => Array
    (
        [1] => 4
        [6] => 88
        [7] => 119
        [8] => 117
        [9] => 107
        [10] => 151
        [11] => 218
    )

此数组被解释为关联数组,因此JavaScript解释为Object数据类型。我的外部库需要一个数组,因此会引发错误并导致JavaScript执行停止。

当我尝试使用此方法用零填充介于两者之间的缺失数据时

foreach($eM_value as $key => $value)
{
    for($x = 0;$x <= 11;$x++)
        $eM_value[$key][$x] = ((isset($eM_value[$key][$x])) ? intval($eM_value[$key][$x]) : 0);
}

它仍然被解释为关联数组。

[2015] => Array
    (
        [1] => 4
        [6] => 88
        [7] => 119
        [8] => 117
        [9] => 107
        [10] => 151
        [11] => 218
        [0] => 0
        [2] => 0
        [3] => 0
        [4] => 0
        [5] => 0
    )

如何将此特定条目转换为数字数组?

如果需要更多信息,请发表评论,我会添加它。

2 个答案:

答案 0 :(得分:2)

您可以使用array_fill准备一个占位符数组,然后使用array_replace将实际数据放入:

<?php

$input = [
    1 => 10,
    3 => 12,
    5 => 54
];

$output = array_replace(array_fill(0, 12, 0), $input);
print_r($output);

会给你:

Array ( 
   [0] => 0 
   [1] => 10 
   [2] => 0 
   [3] => 12 
   [4] => 0 
   [5] => 54 
   [6] => 0 
   [7] => 0 
   [8] => 0 
   [9] => 0 
   [10] => 0 
   [11] => 0 
)

这样,您可以避免对键进行排序。

答案 1 :(得分:0)

只需在PHP中使用array_values函数,它将输出所有值的数字数组