2017-05-28 46 views
0

我是PHP語言的新成員。我正在編寫一個PHP腳本以從我的在線數據庫(在我的altervista個人網頁上創建)獲取信息並以JSON格式進行轉換。 問題是,當我從我的數據庫中獲取元素時,我可以使用「echo」命令正確顯示它們,但是當我將關聯數組解析爲「json_encode」函數時,我看不到正確的元素。PHP將關聯數組內容轉換爲JSON格式

下面是代碼:

$sql = "SELECT * FROM People"; 
$result = $conn->query($sql); 
$json_array = array(); 

if ($result->num_rows > 0) { 
    // output data of each row 
    $row = $result->fetch_assoc(); 
    foreach($row as $key => $value) { 
     echo "" . $key . ": " . $value; 
     echo "<br>"; 
     $json_array[] = array(''=>$key, ''=>$value); 
    } 
} else { 
    echo "0 results"; 
} 
echo json_encode($json_array); 
$conn->close(); 
?> 

$result->fetch_assoc();返回一個關聯陣列。

正如我之前說過的,我可以使用echo命令查看正確的信息。

的問題是當我使用此:

$json_array[] = array(''=>$key, ''=>$value); 

的輸出是如下:

[{"":"Mark"},{"":"ABC"},{"":"25"}] 

基本上它顯示我僅第二參數「=> $值」,而第一參數「=> $ key」被忽略。

你能告訴我,我應該改變什麼,以便看到我的輸出中的第一個參數?

感謝

回答

0

正確的方法是做,而不是

$json_array[] = array($key => $value);

$json_array[] = array(''=>$key, ''=>$value);

你基本上是添加一個空字符串作爲鍵和$鍵作爲值,然後用$值替換它,因爲它們共享a中的EMPTY字符串鍵rray。

閱讀更多:http://php.net/manual/en/language.types.array.php#language.types.array.syntax.array-func

+0

只是想你的解決方案,但現在我看不到任何東西,既不是第二個參數。可能錯了我上面發佈的代碼的另一部分? – xXJohnRamboXx

0

第一個參數被忽略,因爲它具有相同的密鑰作爲第二(關鍵是「」),你應該寫:

$json_array[] = array($key, $value); // Indexed array 

輸出將是:

[["key1", "value1"],["key2", "value2"],["key3", "value3"]] 

OR

$json_array[] = array($key => $value); // Associative array 

輸出將是:

[{"key1": "value1"},{"key2": "value2"},{"key3": "value3"}] 
+0

嘗試了兩種解決方案,但現在我什麼都看不到,也沒有看到第二個參數。可能錯了我上面發佈的代碼的另一部分? – xXJohnRamboXx

0

嘗試:

sql = "SELECT * FROM People"; 
$result = $conn->query($sql); 

$json_array = array(); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while ($row = $result->fetch_assoc()) { 
     $json_array[] = $row; 
    } 
} else { 
    echo "0 results"; 
} 
echo json_encode($json_array); 
$conn->close(); 

在你的代碼的解析只有第一個DB結果

相關問題