2014-01-24 2 views
1

я извлекать и печатать данные из базы данных MySQL в json метода: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

Смежные вопросы