2013-02-14 71 views
-1

我開發PHP代碼:在PHP JSON編碼結合陣列

while($row = mysql_fetch_array ($result))  
    { 

     $catalogue = array(
      'catalogue_id' => $row[0],   
      'catalogue_name' => $row[1], 
      'catalogue_cover' => $row[2], 

      'category' => array(
          'id' => $row[3], 
          'name' => $row[4], 
          'cover' => $row[5], 
          'item' => array (
           'id' => $row[6], 
           'name' => $row[7], 
           'cover' => $row[8], 
           'description' => $row[9], 
           'price' =>$row[10] 
          ) 
      ),     
     ); 
     array_push($json, $catalogue);    
    } 
    $jsonresult = array2json($json); 
    echo $jsonresult; 

結果JSON是:

[ 
    { 
     "catalogue_id": "59", 
     "catalogue_name": "IT Catalog", 
     "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg", 
     "category": { 
      "id": "60", 
      "name": "Computer Accessory", 
      "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg", 
      "item": { 
       "id": "61", 
       "name": "CD", 
       "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg", 
       "description": "", 
       "price": "0.00" 
      } 
     } 
    }, 
    { 
     "catalogue_id": "59", 
     "catalogue_name": "IT Catalog", 
     "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg", 
     "category": { 
      "id": "61", 
      "name": "IT Category", 
      "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg", 
      "item": { 
       "id": "63", 
       "name": "IT Item", 
       "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg", 
       "description": "", 
       "price": "0.00" 
      } 
     } 
    } 
] 

但我想在同一目錄這樣的組合:

[ 
    { 
     "catalogue_id": "59", 
     "catalogue_name": "IT Catalog", 
     "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg", 
     "category": { 
      "id": "60", 
      "name": "Computer Accessory", 
      "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg", 
      "item": { 
       "id": "61", 
       "name": "CD", 
       "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg", 
       "description": "", 
       "price": "0.00" 
      }, 
     "category-2": { 
       "id": "61", 
       "name": "IT Category", 
       "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg", 
       "item": { 
        "id": "63", 
        "name": "IT Item", 
        "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg", 
        "description": "", 
        "price": "0.00" 
       } 
      } 
     } 
    } 
] 

我該怎麼做?

+0

我dont't認爲是使用JSON的想法。 ..你會有2倍的關鍵類別或以後多次,應該違反規範你想要的方式 – Dukeatcoding 2013-02-14 10:24:06

+0

你是說你只是想覆蓋類別eleme '$ json'數組的nt?這很混亂。 – 2013-02-14 10:24:39

+0

我編輯我的問題類別到類別2。我可以創建它嗎? – thinzar 2013-02-14 10:26:59

回答

1

可以索引$catalogue通過catalogue_id和追加category,因爲他們來

while ($row = mysql_fetch_array($result)) { 
    $catalogue_id = $row[0]; 
    if (!isset($json[$catalogue_id])) { 
     $json[$catalogue_id] = array(
      'catalogue_id' => $catalogue_id, 
      'catalogue_name' => $row[1], 
      'catalogue_cover' => $row[2] 
      'categories' => array(); 
      ); 
    } 

    $json[$catalogue_id]['categories'][] = array(
     'id' => $row[3], 
     'name' => $row[4], 
     'cover' => $row[5], 
     'item' => array (
      'id' => $row[6], 
      'name' => $row[7], 
      'cover' => $row[8], 
      'description' => $row[9], 
      'price' =>$row[10] 
     ); 
} 

$jsonresult = array2json(array_values($json)); 
echo $jsonresult; 

相反的array2json你也可以使用json_encode

echo json_encode(array_values($json)); 
+0

感謝您的幫助。目錄結合在一起,但類別爲空數組。 – thinzar 2013-02-15 03:50:11

+0

我明白了。我添加$ json [$ catalogue_id] = $ catalog;在array_push($ catalog ['categories'],$ category)之後;這個。 – thinzar 2013-02-15 04:03:05

+0

@thinzar對不起,我錯過了。我簡化了代碼。請參閱最新的答案。 – 2013-02-15 08:36:07