2012-03-02 11 views
0

私はPHPで非常に新しく、JSONについても知らない。また、私は質問の中でそれを表現する方法を知ることができませんでした。私の質問は、JSON(PHP)で別の列を取得する方法は?

データベースからのデータを使用してPHPでJSONデータを作成する必要があります。だから私の予想される出力はどんなものなのでしょうか?

{ "canFireAPICalls": true, "ads": { "servers": [ { "type": "OpenX", "apiAddress": "http://openx.openvideoads.org/openx/www/delivery/fc.php", } ], "schedule": [ { "zone": "5", "position": "pre-roll" }, { "zone": "33", "width": 450, "height": 50, "startTime": "00:00:05", "duration": "15" } ], } } 

私がPHPで書いたのは、

while ($doZones->fetch() && $row = $doZones->toArray()) { 
    $row_array['zone'] = $row['zoneid']; 
    $row_array['position'] = $row['delivery']; 

    if($row['delivery'] == 0 || $row['delivery'] == 1 || $row['delivery'] == 4){ 
     $row_array['width'] = $row['width']; 
     $row_array['height'] = $row['height']; 
    } 


    array_push($return_arr,$row_array); 
} 

$resultJSON .=json_encode($return_arr); 

そして、私の出力あなたが気づいた場合は、さえ幅と高さがあってはならない

{ "canFireAPICalls": true, "ads": { "servers": [ { "type": "OpenX", "apiAddress": "http://openx.openvideoads.org/openx/www/delivery/fc.php", } ], "schedule":[{"zone":"3","position":"6"},{"zone":"2","position":"6"},{"zone":"4","position":"6"},{"zone":"5","position":"6"},{"zone":"6","position":"1","width":"468","height":"60"},{"zone":"7","position":"6","width":"468","height":"60"},{"zone":"8","position":"0","width":"120","height":"600"},{"zone":"9","position":"7","width":"120","height":"600"},{"zone":"10","position":"0","width":"120","height":"600"},{"zone":"11","position":"0","width":"728","height":"90"},{"zone":"12","position":"0","width":"120","height":"90"},{"zone":"13","position":"1","width":"468","height":"60"},{"zone":"14","position":"3","width":"468","height":"60"},{"zone":"15","position":"1","width":"560","height":"40"},{"zone":"16","position":"4","width":"468","height":"60"},{"zone":"17","position":"6","width":"468","height":"60"},{"zone":"18","position":"6","width":"468","height":"60"},{"zone":"19","position":"7","width":"468","height":"60"}] } } 

で、そこにあります。 $ row ['delivery']が0,1、または4のときだけ、幅と高さが必要です。しかし、値0,1または4が見つかると、次の行が0,1または4でなくても、幅と高さを印刷します。これを修正する方法はありますか?私はJSONを知らず、PHPで始まったばかりです。今のところ、私はデュレーションやプレロールの作成などの不足しているタグは気にしません。私はこれを解決した後、私は彼らの世話をします。

+0

これはJSONとは何の関係も、あなたは '$のreturn_arr'に正しいデータを取得していることを確認していません。 'print_r($ return_arr);'を使い、その内容を確認してください。 – scibuff

+0

ビルドPHP関数 – Poonam

答えて

1

問題はあなたのPHPにあります。配列$row_arrayの値をリセットしないので、最初に条件が真であれば、高さと幅の値は配列に保持されます。

あなたはこのようにそれを修正することができます。

while ($doZones->fetch() && $row = $doZones->toArray()) { 
    $row_array['zone'] = $row['zoneid']; 
    $row_array['position'] = $row['delivery']; 

    if($row['delivery'] == 0 || $row['delivery'] == 1 || $row['delivery'] == 4){ 
     $row_array['width'] = $row['width']; 
     $row_array['height'] = $row['height']; 
    } 


    array_push($return_arr,$row_array); 
    // Add this line to reset the array and reset width/height 
    $row_array = array(); 
} 

$resultJSON .=json_encode($return_arr); 
+0

でjson_encode($ array)と 'json_decode($ value)'を使うことができます。それを行う。私はあなたの答えを50秒で受け入れます – Ada

関連する問題