我有以下问题:
我有一个二维数组,其中包含一些数据,第一个索引包含“年”,第二个索引中包含一个带值的范围。
这是一个如何通过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
)
如何将此特定条目转换为数字数组?
如果需要更多信息,请发表评论,我会添加它。
答案 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
函数,它将输出所有值的数字数组