2017-05-03 27 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

u 'json_encode()を使用しています –

+0

多次元配列のjson表現であるため、出力があります。あなたの望む出力を得ることは確かに可能ですが、出力は何のために使用されますか? – Steve

+0

実際のクエリ出力は何ですか – sujivasagam

答えて

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

ありがとうございます。これを行う唯一の方法ですか、またはmySQLからデータを配列として取得せずに取得した後に、それらを1つの配列に配置することはできますか? –

関連する問題