Форматирование массива multi-d в CodeIgniter - PullRequest
0 голосов
/ 05 марта 2011

Я пытаюсь получить следующий формат вывода из запроса CI и последующего JSON_encode:

{"clients":{"id":"3","name":"Client Number1"},{"id":"2","name":"Client Number2"},{"id":"1","name":"Test Client"},{"id":"4","name":"Test Client2"}}

Объединяя небольшие функции в контроллере и модели, я использую:

$query = $this->db->query('SELECT id, name FROM clients ORDER BY name ASC');
        foreach ($query->result() as $row)
        {
            $arr['clients'][] = $row;
        }

        $json = json_encode($arr, JSON_FORCE_OBJECT);
        echo $json;

Этот код выводит (ниже), который включает значения индекса массива ("1", "2" ... и т. Д.) Как я могу удалить эти значения индекса из результата?Спасибо за любую помощь, которую вы можете оказать.Этот кризис не разрушает сделки.Я мог бы разобрать их на другой стороне сделки ... но думал, что всезнающий SO может знать, как сделать это более элегантно !!

{"clients":{"0":{"id":"3","name":"Client Number1"},"1":{"id":"2","name":"Client Number2"},"2":{"id":"1","name":"Test Client"},"3":{"id":"4","name":"Test Client2"}}}

Ответы [ 2 ]

2 голосов
/ 05 марта 2011

Редактировать: я был не прав.

Видимо, все объекты в json_encode PHP печатаются как ассоциативные массивы, и, таким образом, он всегда печатает ключи.По крайней мере, это то, что я получил со страницы json_encode в руководстве по PHP.

Удаление JSON_FORCE_OBJECT (и использование $query->result_array()) избавляет от ключей, но не точно что вы ищете:

{"clients":[{"id":"3","name":"Client Number1"},{"id":"2","name":"Client Number2"},{"id":"1","name":"Test Client"},{"id":"4","name":"Test Client2"}]}
1 голос
/ 05 марта 2011

Спасибо, Тревор ... Я ценю помощь.Вы на самом деле указали мне в правильном направлении.Я забыл, что параметр 'JSON_FORCE_OBJECT' может испортить ситуацию.Фактически это было ... см. Ниже:

$query = $this->db->query('SELECT id, name FROM clients ORDER BY name ASC');
        foreach ($query->result() as $row)
        {
            $arr['clients'][] = $row;
        }

        $json = json_encode($arr); // Note JSON_FORCE_OBJECT removed
        echo $json;

Этот код выводит:

{"clients":[{"id":"3","name":"Client Number1"},{"id":"2","name":"Client Number2"},{"id":"1","name":"Test Client"},{"id":"4","name":"Test Client2"}]}

Я думаю, что это просто позволило JSONArray (следовательно, квадратные скобки) жить внутри JSONObject... Я могу жить с этим.

Еще раз спасибо, Тревор!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...