如何从PHP数组周围删除双方括号

时间:2017-05-03 12:34:32

标签: php arrays

我将数据从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) . ')'; 

请有人解释导致额外[]的原因以及我如何删除它们?

1 个答案:

答案 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) . ')';