6

Iamはjson_encodingを約2時間試しましたが、iamは必要な出力を取得していません。実際、これは私がここで説明する形式で質問しているモバイルアプリケーション開発者の要件です。以下のコードは私が試したものです:

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 />";

出力は次のとおりです。

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

ここで、上記の出力では、親カテゴリ配列は子カテゴリ配列なしで空です。すべての子カテゴリ配列をその親カテゴリ配列に格納し、最後に親カテゴリと子カテゴリの両方をJsonOutput配列に格納する必要があるため、次のように出力します。

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

2 に答える 2

2

おそらくこれを行う必要があります(重要なビットのみが示されています):

$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;
}

親カテゴリを保存および操作するために一時変数を使用しました。これは、ループの最後にメイン配列に追加されます。

于 2012-12-14T11:10:22.383 に答える
-1

次のコードを使用して、whileループ内にインデックスを付けてください...

$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 />";
于 2012-12-14T10:59:26.597 に答える