【发布时间】:2018-01-13 18:19:46
【问题描述】:
我从另一个 php 函数获取以下数组,因此最后一个数组的顺序与其余数组不同:
Array
(
[2017] => Array
(
[Feb] => Array
(
[P] => 11
[T] => 0
[U] => 0
[E] => 0
)
[Mar] => Array
(
[P] => 20
[T] => 0
[U] => 0
[E] => 0
)
[Apr] => Array
(
[P] => 12
[T] => 0
[U] => 0
[E] => 0
)
[May] => Array
(
[P] => 21
[T] => 0
[U] => 0
[E] => 0
)
[Jun] => Array
(
[E] => 0
[P] => 7
[T] => 0
[U] => 1
)
)
)
为了将此 php 数组数据转换为 JS 数据源,我想出了以下 php 函数
function phpToJS($inputPHP) {
$return = '';
foreach ($inputPHP as $year => $months) {
foreach ($months as $monthValue => $codeValues) {
$sum = 0;
$return .= "['" . $year . " - " . $monthValue . "', ";
foreach ($codeValues as $key => $code) {
if ($key == '') {
$return .= $code;
} else {
$return .= $code . ',';
}
$sum += $code;
}
$return .= ",'" . $sum . "'],";
}
}
return $return;
}
它几乎可以工作,除了最后一个数组。由于顺序错误,似乎没有只看位置的关键“名称”,所以输出看起来像
['2017 - Feb', 11,0,0,0,'11'],
['2017 - Mar', 20,0,0,0,'20'],
['2017 - Apr', 12,0,0,0,'12'],
['2017 - May', 21,0,0,0,'21'],
['2017 - Jun', 0,7,0,1,'8'] <---wrong ['2017 - Jun', 7,0,1,0,'8']
那么我怎样才能确定正确的和数在正确的位置呢?
【问题讨论】:
-
总是
P、T、U,然后是E?然后直接访问这些键,而不是遍历$codeValues。 -
并且编码为 json 必须使用
json_encode -
还有,为什么最后一个数组不一样?
-
还有也——和stackoverflow.com/questions/48241343/…有什么区别?
-
阅读你所有的问题,你的错误在字符串
ksort($output[$year][$month]);中。
标签: php arrays json multidimensional-array