2012-12-14 21 views
5

İki saat boyunca json_encoding ile çalışıyorum ancak çıktıyı gerektiği gibi alamıyorum.PHP json_encoding verileri ebeveynler ve alt kategoriler ile

include_once("class_connection.php"); 

//Getting the Parent Category 

$sqlStr = mysql_query("select catname , id from `category` where `parentid`='0'"); 
$jsonArray = array(); 

while ($fetchStr = mysql_fetch_assoc($sqlStr)) { 

    $jsonArray[] = array("ParentCategory" => $fetchStr["catname"]); 
     $id = $fetchStr['id']; 

    //Getting child categories from the above parent 

    $sqlChildStr = mysql_query("SELECT catname,id,parentid FROM `category` where `parentid`='$id'"); 

    while ($fetchchildStr = mysql_fetch_assoc($sqlChildStr)) { 

     $jsonArray[] = array("ChildCategory" => $fetchchildStr["catname"]); 
    } 

} 

echo json_encode(array("JsonOutput" => $jsonArray)) . "<br />"; 

Çıktı geçerli:: İşte

"JsonOutput":[{"ParentCategory":"Animals"},{"ChildCategory":"Bear"},{"ChildCategory":"Deer"},{"ChildCategory":"Dolphins"}, 
{"ParentCategory":"Art"},{"ChildCategory":"Hand Painting"},{"ChildCategory":"Painting"},{"ChildCategory":"3D"},{"ChildCategory":"Abstract"}]} 

Aslında bu ı aşağıda here.The kodu açıklayacağız biçimde soruyor mobil uygulama geliştirici için bir gereklilik denedim ne olduğunu Yukarıdaki çıktıda ana kategori dizisi, alt kategori dizisi olmadan boştur. Ben üst kategorisi dizideki tüm alt kategori diziyi saklamak istediğiniz ve nihayet i

"JsonOutput":[{ 
"ParentCategory":"Animals" : [{ 
    {"ChildCategory":"Bear"},{"ChildCategory":"Deer"},{"ChildCategory":"Dolphins"} 
]} 
"ParentCategory":"Arts" : [{ 
    {"ChildCategory":"Hand Painting"},{"ChildCategory":"Painting"},{"ChildCategory":"3D"}, {"ChildCategory":"Abstract"} 
]} 
]} 
+3

İstediğiniz çıktı benim için geçerli JSON gibi görünmüyor. –

+4

JSON çıktınızı biçimlendirmek (ya da güzelleştirmek) istiyorsunuz. Ama neden bu ilk etapta gerekli? İnsanoğlu işleyecek mi? –

+0

@Pekka: Daha yakından bakın, bu kesinlikle prettification ile ilgili değildir: '' ParentCategory ':' Hayvanlar ': [{'<- sadece geçersiz JSON oluşturma hakkında. – hakre

cevap

2
muhtemelen (sadece önemli bitleri gösterilmektedir) yapmanız gerekir

:

$jsonArray = array(); 
while ($parentCat = mysql_fetch_assoc($sqlStr)) { 
    $temp = array(
     "ParentCategory" => $parentCat["catname"] 
    ); 
    while ($childCat = mysql_fetch_assoc($sqlChildStr)) { 
     $temp["ChildCategory"][] = array(
      "ChildCategory" => $childCat["catname"] 
     ); 
    } 
    $jsonArray[] = $temp; 
} 

ben depolamak için geçici bir değişken kullanılır ve üst kategoriyi işlemek. Bu, döngü sonunda ana diziye eklenir.

+0

Yardımlarınız için çok teşekkürler. İyi çalışıyor. – raduns

0

aşağıdaki kodları kullanın olarak çıktı istediğiniz böylece JsonOutput diziye ebeveyn ve çocuk kategorisi hem saklamak zorunda vermek while döngüsünde endeksi ...

$jsonArray = {}; 
while ($fetchStr = mysql_fetch_assoc($sqlStr)) { 

    //$jsonArray[] = array("ParentCategory" => $fetchStr["catname"]); 
     $id = $fetchStr['id']; 

    //Getting child categories from the above parent 

    $sqlChildStr = mysql_query("SELECT catname,id,parentid FROM `category` where `parentid`='$id'"); 

    while ($fetchchildStr = mysql_fetch_assoc($sqlChildStr)) { 

     $jsonArray["ParentCategory"][$fetchStr["catname"]] = array("ChildCategory" => $fetchchildStr["catname"]); 
    } 

} 

echo json_encode(array("JsonOutput" => $jsonArray)) . "<br />"; 
İlgili konular