【发布时间】:2019-05-12 12:56:54
【问题描述】:
我有以下问题:
我有一个包含一些数据的二维数组,第一个索引包含“年份”,第二个索引包含一个包含值的范围。
这是一个如何通过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
)
如何将此特定条目转换为数值数组?
如果需要更多信息,请发表评论,我会添加它。
【问题讨论】:
-
ksort数组。 -
如果数字键中有“孔”,最好将其理解为 JS 中的对象,否则您将有一堆未定义的元素填充孔。数组在 JS 中不能有空洞。
-
尝试创建一个新数组而不是重用$eM_value
-
在 json_encode 之前创建新数组。使用 array_values 获取没有索引间隙的范围。
foreach($array as $year => $ranges) { newArray[$year] = array_values($ranges)}和 json_encode 新数组
标签: javascript php arrays