首页 > 解决方案 > 更改文件中的 JSON 输出格式?

问题描述

我有下一个 PHP 代码,它使我成为一个 JSON 文件,其中包含我的 SQL 表中的数据:

<?php
$mysqli = new mysqli('localhost','root','xxxx','xxxx');
$myArray = array();
$result = $mysqli->query("SELECT CONCAT(Datum , ' ', Tijd) as Datum, KleurL FROM metingen order by Datum ASC limit 20");
if ($result) {
  $tempArray = array();
  while ($row = $result->fetch_object()) {
    $tempArray = $row;
    array_push($myArray, $tempArray);
  }
  echo json_encode($myArray,JSON_NUMERIC_CHECK);
  $fp = fopen('resultsv2.json', 'w');
  fwrite($fp, json_encode($myArray,JSON_NUMERIC_CHECK));
  fclose($fp);
}
$result->close();
$mysqli->close();
?>

JSON 文件的输出如下所示:

[{"Datum":"17-01-2019 10:31:39","KleurL":17.68},{"Datum":"17-01-2019 11:10:59","KleurL":71.76},{"Datum":"18-01-2019 08:40:41","KleurL":70.7},{"Datum":"18-01-2019 10:30:01","KleurL":71.03},{"Datum":"18-01-2019 12:05:46","KleurL":70.56},{"Datum":"18-01-2019 14:31:58","KleurL":16.2}]

但我希望看到该文件的输出如下所示:

[
  [
    17.68,
    17-01-2019 10:31:39
  ],
  [
    18.11,
    17-01-2019 11:15:20
  ]
]

如何在 JSON 文件中获取此输出?

标签: phpmysqlsqljsonfile

解决方案


您可以使用以下json_encode() JSON_PRETTY_PRINT选项:

json_encode($myArray,JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);

编辑:

如果您使用的是 Windows,则需要使用以下内容更改回车:

$myArray = array("test" => "data");

$buffer = json_encode($myArray,JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);

echo str_replace("\n", "\r\n", $buffer);
// or
$fp = fopen('resultsv2.json', 'w');
fwrite($fp, str_replace("\n", "\r\n", $buffer));
fclose($fp);

如果要将其打印到浏览器中,则需要使用<pre>标签

<pre>
echo json_encode($myArray,JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
</pre>

推荐阅读