我将数据从mySQL数据库返回到PHP数组,但我不知道是什么导致了整个数组周围的额外方括号。我试过玩它,但我无法摆脱它。我所追求的是
([ “0.00”],[ “0.00”],[ “0.00”],[ “1.80”],[ “0.00”])
但我得到的是
([[“0.00”],[“0.00”],[“0.00”],[“1.80”],[“0.00”]])
我的PHP低于
$queryDate = date("Y-m-d");
$query = "SELECT windspeed FROM `weather_data` WHERE date_format(timestamp, '%Y-%m-%d') = '" . $queryDate . "'";
$result = db_query($query);
// If query failed, return `false`
if($result === false) {
return false;
}
$rows = array();
while ($row = mysqli_fetch_row($result)) {
$rows[] = $row;
}
echo $_GET['callback']. '('. json_encode($rows) . ')';
请有人解释导致额外[]的原因以及我如何删除它们?
答案 0 :(得分:0)
每个获取的结果都是一个数组,您将其插入$rows
这是一个数组。这导致了一个多维数组。
您可以在获取所有行后展平多维数组,然后在其上执行json_encode()
。
所以你的行在echo语句之前就是这个:
$rows = [["0.00"],["0.00"],["0.00"],["1.80"],["0.00"]];
你可以像这样展平它:
$flattenedRow = array_reduce($rows, function ($a, $b) {
return array_merge($a, $b);
}, []);
所以现在你的$flattenedRow
是:
["0.00","0.00","0.00","1.80","0.00"]
然后你可以按照需要回应它:
echo $_GET['callback']. '('. json_encode($flattenedRow) . ')';