2014-01-24 34 views
1

我檢索和打印數據:PHP MySQL的JSON自定義輸出

$ret = array(); 

$fileName = Access::FetchDB("SELECT name FROM tags"); 
    $ret[]= $fileName; 
echo json_encode($ret); 

現在輸出的是:

[[{"name":"test1"},{"name":"test2"},{"name":"test3"}]] 

,但我需要這樣的輸出:

["test1","test2","test3"] 

我如何打印?

+0

只是遍歷'$ fileName'和這些值放到'$ ret'。 –

回答

5
[[{"name":"test1"},{"name":"test2"},{"name":"test3"}]] 

就像是有這個

array(array(array('name' => 'test1'), array('name' => 'test2'), array('name' => 'test3'))); 

首先,不要做到這一點:

$ret[]= $fileName; 

,只保留$fileName這應該是這樣的:

array(array('name' => 'test1'), array('name' => 'test2'), array('name' => 'test3')); 

更好的辦法是擁有array('test1', 'test2', 'test3')並且在沒有array_values()的情況下進行編碼。你可以做到這一點在PHP端:

$ret = array(); 
$fileName = Access::FetchDB("SELECT name FROM tags"); 

foreach($fileName as $key => $value) 
    $ret[] = $value['name']; 

echo json_encode($ret); 
+0

我測試過但不適合我!我看到'[[{「name」:「test1」},{「name」:「test2」},{「name」:「test3」}]]'output。 –

+0

試試'echo json_encode(array_values($ fileName));' –

+0

我編輯了我的答案 –

1

嘗試這種解決方案:

$ret = array(); 

$fileNames = Access::FetchDB("SELECT name FROM tags"); 
$ret = array_values($fileNames); 
echo json_encode($ret); 
+0

不幸的是,這是行不通的。我首先回答了類似的問題,看到我的答案明白爲什麼 –

+0

我沒有注意到數組中的數組,只有鍵值對。對不起,我的錯。 – bvarga