PHP实现:将未知数量的JSON转为x/y键的多维关联数组
搞定PHP数组键名转换:从label/value转成x/y结构
嘿,我看你现在的代码问题出在只处理了每个数据集里的第一个元素,而且手动设置索引会覆盖之前的内容,根本没遍历所有数据点。来,给你修正后的代码,直接就能得到你想要的数组结构:
完整修正代码
如果你的$charts是包含多个图表数据集的数组(比如多个metingen集合):
$dataPoints = []; foreach ($charts as $chart) { // 遍历当前数据集里的每一个数据条目 foreach ($chart as $item) { // 把label转成x,value转成y,追加到结果数组 $dataPoints[] = [ 'x' => $item['label'], 'y' => $item['value'] ]; } }
要是你的$charts直接就是单个metingen的数组(也就是示例JSON里的metingen字段对应的数组),那可以简化成:
$dataPoints = []; foreach ($charts as $item) { $dataPoints[] = [ 'x' => $item['label'], 'y' => $item['value'] ]; }
为啥你的原代码不行?
你原来的代码里,每次循环都只取$chart[0](第一个元素),然后把它赋值给$dataPoints[0]——这就导致不管循环多少次,dataPoints里永远只有第一个数据点,后面的全被覆盖了。而用$dataPoints[] = ...会自动往数组末尾追加新元素,完美遍历所有数据。
测试效果
拿你给的示例JSON来说,解析后把$charts设为$jsonData['metingen'],运行代码后$dataPoints就会变成:
array ( array("x"=>"06-06-2019 13:13:38","y"=>25.21), array("x"=>"06-06-2019 13:51:04","y"=>27.69) )
完全符合图表需要的结构~
内容的提问来源于stack exchange,提问作者RoadTrain
相关产品推荐
相关产品推荐

