2017-05-03 50 views
-2

我将数据从mySQL数据库返回到PHP数组中,但我不知道是什么导致整个数组周围的额外方括号。我试过玩过它,但我无法摆脱它。我后是如何从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

你使用'json_encode()' –

+0

你有那个输出,因为那就是多维数组的json表示。它当然有可能得到你想要的输出,但是输出是用来做什么的? – Steve

+0

什么是实际查询输出 – sujivasagam

回答

0

每个获取的结果都是一个数组,你将它插入$rows这是一个数组。这导致了一个多维数组。

您可以在获取所有行后对多维数组进行拼合,然后对其执行json_encode()

所以你的行是这样的回声语句之前:

$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) . ')'; 
+0

谢谢。这是做到这一点的唯一方法吗?或者我可以从mySQL中检索数据而不是数组,然后只要将它们全部检索出来放入一个数组中? –