2012-05-14 23 views
1

У меня есть функция, которая приносит мне некоторые данные из базы данных и сообщений в мой клиент. На данный момент он отправляет данные как обычный массив (вывод - это что-то вроде MyArray (a, b, c, d ..)), но я хочу, чтобы это был MyArray (a (b, c, d)) .. Как Castegory (имя, ID, заказ ..) .. Может кто-нибудь пожалуйста Help..Here мой код уже используется версияКак отправить массив массивов с помощью JSON

public function get_button_template() 
    { 
     $this->q = "SELECT * FROM button_template ORDER BY order_number ASC"; 
     $this->r = mysql_query($this->q); 
     if(mysql_num_rows($this->r) > 0) 
     {   
      while($this->f = mysql_fetch_assoc($this->r)) 
      { 
       $this->buttons[$this->i]["ID"] = $this->f["ID"];   
       $this->buttons[$this->i]["name"] = $this->f["button_name"];    
       $this->buttons[$this->i]["category"] = $this->f["button_category"]; 
       $this->buttons[$this->i]["order_number"] = $this->f["order_number"]; 
       $this->i++; 
      } 
     } 
     return $this->buttons; 
    } 

EDIT немного öore деталь пожалуйста .. когда я синтаксический анализ этого я получаю что-то вроде этого:

"Vaule"("Key1": "Value1" "Key2": "Value2" .

Но что я хочу это omething как

`"Category0":("Key1": "Value1", "Key2": "Value2" .) 

"Category1":("Key1": "Value1", "Key2": "Value2" .)..` 

Как я могу отправить многомерный массив с парами ключ-значение?

+2

просто передайте свой массив json_encode. нет практического ограничения того, насколько глубоко вы гнездите свои массивы. –

+0

@MarcB Я думаю, он тоже хочет преобразовать свой массив. –

+0

Пожалуйста, прекратите писать новый код с помощью древних 'mysql_ *' функций. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://goo.gl/KJveJ). Вместо этого вы должны узнать о [подготовленных утверждениях] (http://goo.gl/vn8zQ) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/ MySQLi). Если вы не можете решить, [эта статья] (http://goo.gl/3gqF9) поможет выбрать. Если вы хотите учиться, [это неплохой учебник, посвященный PDO] (http://goo.gl/vFWnC). –

ответ

3

Просто измените способ сборки массива. Если вы хотите сгруппировать по категориям:

Edit

код изменен для создания нумерованных категории, используя имя => ключ карты.

$category_map = array(); $cat_nr = 0; 
while ($this->f = mysql_fetch_assoc($this->r)) { 
    if (!isset($category_map[$this->f["button_category"]])) { 
     $category_key = "Category{$cat_nr}"; 
     $category_map[$this->f["button_category"]] = $category_key; 
     ++$cat_nr; 
    } else { 
     $category_key = $category_map[$this->f["button_category"]]; 
    } 
    $this->buttons[$category_key]][] = array(
     'category' => $this->f["button_category"], 
     "ID" => $this->f["ID"], 
     "name" => $this->f["button_name"], 
     "order_number" => $this->f["order_number"], 
    ); 
    $this->i++; 
} 

Это создает массив, как:

<category 1>: [ 
    (CatName1, Id1, name1, ordernr1) 
    (CatName1, Id2, name2, ordernr2) 
], 
<category 2>: [ 
    (CatName2, Id3, name3, ordernr3) 
    (CatName2, Id4, name4, ordernr4) 
] 

Затем используйте json_encode на конечный результат.

Кстати, не знаю, почему вы храните эти кнопки внутри самого объекта ;-)

+0

Я делаю приложение веб-службы для iOS (ipad), я отправляю кнопки для каждого пользователя с сервера, я буду группировать кнопки на стороне клиента (ipad) для категорий. И я не настолько опытен с программированием, у меня могут быть проблемы с дизайном объектов, связь с данными сервера и опроса ect .. Спасибо за ваш ответ – ilhnctn

+0

, и этот ответ - именно то, что я точно хотел. Еще раз спасибо :) – ilhnctn

+0

, когда я синтаксический анализ этого я получаю что-то вроде этого: «Vaule» ( «Key1»: «Значение1» «Key2»:. «значение2» Но что я хочу это omething как «Category0» :( "Key1": "Value1" "Key2": "Value2" . ) "Категория1" :( "Key1": "Значение1" "Key2": "значение2" ) .. Как я могу отправить многомерный массив с парами ключ-значение.? – ilhnctn

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