2015-07-17 3 views
-1

У меня есть этот код для результата печати для PHP json выхода:PHP пользовательских значений в json_encode

$value = array(); 
$return_arr = array(); 
$row_array = array(); 
$fileName = Access::FETCH("SELECT name ,id FROM " . TAGS . " GROUP BY name ORDER BY name ASC"); 
foreach($fileName as $key => $value) 
    { 
    $row_array['id'] = $value['id']; 
    $row_array['text'] = $value['name']; 
    $rows2[] = $row_array; 
    } 

$ret = array(); 
echo json_encode($rows2); 

результата является:

[{"id":406,"text":"404"},{"id":405,"text":"tag1"},{"id":404,"text":"tag3"},{"id":401,"text":"tag4"}] 

Но в действии я вижу значение ID не между "" (например: "id":406) Мне нужен этот формат для json_encode:

{"id":"405","text":"tag1"}

Как это создать ?!

+0

Почему это имеет значение? '405' - это int,' '405" - это строка ... и идентификаторы обычно будут ints. –

+0

Если вы выполняете 'SELECT id, name AS text ...', то вам не нужно копировать значения во временный массив. –

ответ

2

во-первых, если вы пишете запрос немного по-другому, то кажется, что вы не должны копировать значения во временный массив:

$fileName = Access::FETCH("SELECT id, name AS text FROM " . TAGS . " GROUP BY text ORDER BY text ASC"); 
json_encode($fileName); 

Другими словами, name AS text просто меняет ключ в источнике, так сказать.

Как целое число, не являющееся строкой. Прежде чем делать что-либо, вы должны подумать, даже если это имеет значение. Если это произойдет, то исправляя это так просто, как только литье в строки:

$row_array['id'] = (string) $value['id']; 

Или, если вы используете мое предложение о запросе SQL, то вы можете просто цикл над данными и бросьте, на месте:

foreach ($fileName as & $value) { 
    $value['id'] = (string) $value['id']; 
} 
json_encode($fileName); 
0

Если вам нужны числовые данные должны быть представлены в виде строки все, что вам нужно сделать, это явно привести его в строку перед вызовом json_encode так:

$row_array['id'] = (string)$value['id']; 
0

Convert $ значение [ «ID»] в строка должна помочь:

$row_array['id'] = (string)$value['id'];