2015-04-20 4 views
-3

В моем проекте я извлекаю строки данных из базы данных и используя json_encode для преобразования данных в JSON. Я откликаюсь на JSON, и пока он показывает правильный результат. Вот пример:Добавление свойства «total» на JSON

{"results":[{"id":"1","name":"test name","description":"test description","db_hostname":"test hostname","db_schema":"test schema","email":"[email protected]"}]} 

Теперь я хочу вставить «итого» перед «результатами». «Итого» - это итоговые данные результатов. Это будет структура:

{"total":"1", "results":[{"id":"1","name":"test name","description":"test description","db_hostname":"test hostname","db_schema":"test schema","email":"[email protected]"}]} 

Значение «total» изменяется в зависимости от количества результатов «результатов». Как это сделать в PHP?

+1

В объекте JSON заказ не имеет значения, так как доступ осуществляется по ключ и порядок редко используются. Вы можете получить доступ непосредственно к «результатам» length 'object.results.length' – baquiax

ответ

0

Поэтому я считаю, что следующий код должен работать (если я понимаю, что вы пытаетесь сделать правильно): http://jsfiddle.net/obfa34mb/

var results = [ 
{"results":[{"id":"1","name":"test name","description":"test description","db_hostname":"test hostname","db_schema":"test schema","email":"[email protected]"}, {"id":"2","name2":"test name2","description2":"test description2","db_hostname":"test hostname","db_schema":"test schema2","email2":"[email protected]"}]}, 
{"results":[{"id":"3","name3":"test name3","description3":"test description3","db_hostname":"test hostname","db_schema":"test schema","email":"[email protected]"}, {"id":"4","name4":"test name4","description4":"test description","db_hostname":"test hostname","db_schema":"test schema4","email4":"[email protected]"}]},  
]; 

var new_results = []; 
for (var i = 0; i < results.length; i++) { 
    var item = { 
     'total': results[i].results.length, 
     'results': results[i].results 
    }; 
    new_results.push(item); 
} 
console.log(new_results); 
+0

Это не отвечает на вопрос: «Как это сделать в PHP?» –

+0

Вопрос задается в Javascript (а именно: OP спрашивает, как получить результат в Javascript), и поэтому это так, как вы это делали в PHP или ASP.NET или что-то еще. Технология на стороне сервера не имеет значения. –

1

Использование json_encode() и json_decode() для достижения этой цели:

<?php 
    $obj = '{"results":[{"id":"1","name":"test name","description":"test description","db_hostname":"test hostname","db_schema":"test schema","email":"[email protected]"}]}'; 
    $arr = json_decode($obj, true); 

    $new_obj = json_encode(array_merge(array("total"=>count($arr['results'][0])), $arr)); 
    print_r($new_obj); 

DEMO

+0

Это не отвечает на вопрос:« Как это сделать в PHP? » –

+0

@EdCottrell Appologies, Обновленные коды –

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