2016-09-10 1 views
0

Ich bin neu in PHP. also kann es sehr einfach sein, aber ich weiß es nicht. Also, ich möchte so in PHP mit json_encode() ausgeben.Drucken foreach Schleife mit json_encode in PHP

"option": [ 
    { 
     "poOptionGroup": "11", 
     "optGrpID": "11", 
     "optGrpName": "Choose Backing Material" 
    }, 
    { 
     "optID": "40", 
     "optName": "Black (Plexiglass)", 
     "optPriceDiff": "0" 
    }, 
    { 
     "optID": "41", 
     "optName": "Clear (Plexiglass)", 
     "optPriceDiff": "18" 
    }, 
    { 
     "optID": "218", 
     "optName": "Neon Stand Off", 
     "optPriceDiff": "18" 
    }, 
    { 
     "optID": "219", 
     "optName": "White Plastic", 
     "optPriceDiff": "18" 
    } 
    ], 
    "option": [ 
    { 
     "poOptionGroup": "13", 
     "optGrpID": "13", 
     "optGrpName": "Any notes you want to include with your order" 
    }, 
    { 
     "optID": "174", 
     "optName": "NO Thanks", 
     "optPriceDiff": "0" 
    }, 
    { 
     "optID": "175", 
     "optName": "YES OUTDOOR", 
     "optPriceDiff": "170" 
    } 
    ], 
    "SPIN3": [ 
    { 
     "poOptionGroup": "56", 
     "optGrpID": "56", 
     "optGrpName": "Upgrade to OUTDOOR" 
    }, 
    { 
     "optID": "44", 
     "optName": "", 
     "optPriceDiff": "20.02" 
    } 
    ] 

dafür habe ich zwei verschachtelte foreach-Schleife. was ist wie folgt:

$product=array(); 
     foreach($query as $q){ 
      $product['optGrpID']= $q['optGrpID']; 
      $product['optGrpName'] = $q['optGrpName']; 
      $product['poOptionGroup'] = $q['poOptionGroup']; 
      $opt_id=$product['optGrpID']; 
       $string= sql("select optID, optName, optPriceDiff from options where optGroup='$opt_id' "); 
       foreach ($string as $k=>$s){ 
        $product['options']['optID']=$s['optID']; 
        $product['options']['optName']=$s['optName']; 
        $product['options']['optPriceDiff']=$s['optPriceDiff']; 
       } 
     }  

also wie kann ich diese gewünschte leistung erreichen? bitte hilfe. Jede Hilfe wird zu schätzen wissen.

+0

Hey @softech - Ich bin nur interessiert, ob meine Antwort für Sie hilfreich war? Brauchen Sie weitere Hilfe zu diesem Thema? –

Antwort

0

Ich bin mitten im Prozess des Schreibens einer PHP JSON API, so dass ich in den letzten Tagen auf ähnliche Probleme stieß. Während ich Ihre spezielle Frage über den PHP-Code nicht lösen kann/will, hier ist das Wichtigste, was ich in vielen Dokumentationen oder Tutorials nicht gefunden habe:

Geben Sie json_encode() ein assoziatives Array erzeugt ein JSON-Objekt mit {key: value, key: value, ...}. Wird ein nicht assoziatives Array angegeben, wird eine JSON-Liste mit [value, value, value, ...] erstellt. Die Werte in der letzteren Version können natürlich Objekte selbst sein ({...}). Das bedeutet, die Struktur, die Sie erhalten möchten, müssen Sie die folgende Array übergeben json_encode:

array(
    "option" => array(
     array(
      "optId" => "40", 
      "optName": "Black (Plexiglass)", 
      "optPriceDiff": "0" 
     ), 
     array(
      "optId" => "40", 
      "optName": "Black (Plexiglass)", 
      "optPriceDiff": "0" 
     ), 
     ....... 
    ), 
    "SPIN3" => array(
     array(
      "poOptionGroup" => "56", 
      "optGrpID" => "56", 
      "optGrpName" => "Upgrade to OUTDOOR" 
     ), 
     array(
      "optID" => "44", 
      "optName" => "", 
      "optPriceDiff" => "20.0" 
     ) 
    ) 
); 

Wie Sie sehen können, einige dieser Arrays sind assoziative Arrays, einige von ihnen sind nicht-assoziative Arrays als eine wirkende "einfache Liste". Wenn Sie dies wissen, sollte es einfach sein, Ihren PHP-Code zu modifizieren, um ein Array wie das obige zu erzeugen und es an json_encode() weiterzugeben. Wenn Sie json_encode() nicht zwingen, JSON-Objekte immer mit einem Flag zu erzeugen, behandelt PHP die Konvertierung in JSON-Objekte und JSON-Listen, wie oben zu sehen.

Für korrekte Terminologie: "Liste" bezieht sich auf JSON-Arrays, während assoziative Arrays in JSON-Objekte mit String-Wert-Links konvertiert werden. Einzelheiten finden Sie unter JSON website.