如何在 json 编码之前重新索引子数组?

How to re-index subarrays before json encoding?

这是我当前的 JSON 输出:

{
   0: {
      label: 1509521006,
      value: 12.324711
   },
   1: {
      label: 1509531448,
      value: 12.700929
   }
}

我应该怎么做才能使我的 JSON 输出像这样:

[
 [
   1509521006,
   12.324711
 ],
 [
   1509531448,
   12.700929
 ]
]

这是我的 PHP 代码,用于将我的数组转换为 JSON

if ($count > 0) {
    $categoryArray = array();
    foreach ($sensObj as $dataset) {
        array_push($categoryArray, array(
            "label" => $dataset["time"],
            "value" => $dataset["value"]
        ));
    }
    print json_encode($categoryArray);
}

您正在构建输出 JSON,所以只需按照您需要的不同方式进行即可:

<?php
if ($count > 0) {
    $categoryArray = array();
    foreach ($sensObj as $dataset) {
        array_push($categoryArray, array(
            $dataset["time"],
            $dataset["value"]
        ));
    }
    print json_encode($categoryArray);
}

或者,作为替代语法:

if ($count > 0) {
    $categoryArray = [];
    foreach ($sensObj as $dataset) {
        $categoryArray[] = [
            $dataset['time'],
            $dataset['value'],
        ];
    }
    print json_encode($categoryArray);
}

您尝试打印对象或数组的内容,因为您的结果在对象中,而您希望它们在数组中。

[ [ 1509521006, 12.324711 ], [ 1509531448, 12.700929 ] ]

您可以使用此代码

创建此json
<?php
if ($count > 0){ 
   $categoryArray = array();
 foreach ($sensObj as $dataset) { 
     array_push($categoryArray,array( $dataset["time"],  $dataset["value"])); 
}
 print json_encode($categoryArray); } 

试试这个。

您只需要 re-index 子数组。只需解码 json,重新索引子数组,然后 re-encode 它。

这里有一个 one-liner 给你:

代码:(Demo)

echo json_encode(array_map('array_values',json_decode($your_json,true)));

输出:

[["1509521006","12.324711"],["1509531448","12.700929"]]

我相信用你的代码来实现,你会写:

echo json_encode(array_map('array_values',$sensObj));
// this assumes $sensObj is an array and not an object array