2016-03-23 7 views
-1

私はこのコードを作成しました:jsonのメインノードをオブジェクトの配列として返す方法は?

$lists = $this->db->select("SELECT * FROM LOGGER"); 

    $results = array(); 
    $results['information'] = array(); 

    $informations = $this->db->select("SELECT * FROM INFO WHERE code = :ccode", array("ccode" => "3")); 

    foreach($informations as $item) 
    { 
      $results['information'][] = $item; 
    } 

    $response = array(
     "stack" => $lists, 
     "information" => $results['information'] 
    ); 

    if(!empty($response['details'])) 
    { 
     return '{"logger": ' . json_encode(array_values($response)) . '}'; 
    } 

私は、データベースからスタック情報を取得し、二つの配列を作成します。最初に、以下で見ることができるすべての情報スタックを保存します。 2番目の配列はスタックの記述のみを保存します。後で、各インデックスstackinformationを2つのクエリの結果として保存する結果配列を作成します。今、最終結果はこれです:

{ 
"logger": { 
    "stack": { 
    "Code": "RB01", 
    "Descri": null, 
    "Created": "2016-03-09 04:36:04" 
    }, 
    "information": [ 
     { 
     "Id": "RB01", 
     "numeric": 1 
     }, 
     { 
     "Id": "RB01", 
     "numeric": 2 
     }, 
     { 
     "Id": "RB01", 
     "numeric": 3 
     } 
    ] 
    } 
} 

が、私の目標は、次のような構造を作成している:私は私のコードで行う必要があります変更

{ 
"logger": [ 
    { 
    "stack": [ 
     { 
     "Code": "RB01", 
     "Descri": null, 
     "Created": "2016-03-09 04:36:04" 
     } 
    ], 
    "information": [ 
     { 
     "Id": "RB01", 
     "numeric": 1 
     }, 
     { 
     "Id": "RB01", 
     "numeric": 2 
     }, 
     { 
     "Id": "RB01", 
     "numeric": 3 
     } 
    ] 
    } 
] 
} 

を?

答えて

1

私にとって、あなただけ変更する必要があります。

return '{"logger": ' . json_encode(array_values($response)) . '}'; 

で:

あなたのコードで生成された結果いや
return '{"logger": ' . json_encode(array($response)) . '}'; 
+0

唯一の問題は、「スタック」:["コード": "RB01"、 "Descri":null、 "作成済み": "2016-03-09 04:36:04" } ] { "コード": "RB01"、 "Descri":null、 "作成済み": "2016-03-09 04:36:04" }「私はただ気付いただけです。私はこの例で間違いを犯したので、修正しました。 – Sandokan

+0

問題はありませんが、あなたのコメントが質問の出力と同期していないように見えるので、あなたの質問の出力が正しいことを確認してください。 – rsabir

0

別の配列にオブジェクトをラッピングするだけのようですか?

if(!empty($response['details'])) 
{ 
    $encoded = array(array_values($response)); 
    return '{"logger": ' . json_encode($encoded) . '}'; 
} 

また、独自のjsonを作成するよりも新しい配列json_encodeを作成する方が一般的に安全です。

if(!empty($response['details'])) 
{ 
    $encoded = array(array_values($response)); 
    $result = array(
     'logger' => array(array_values($response)), 
    ); 
    return json_encode($result); 
} 
+0

はこれです:http://pastebin.com/rW6ejM9t – Sandokan

+0

最後の4行を私のコードに置き換えてください。あなたの残りの部分を保つ。 –

+0

私は、コードが最終的なifに入っていると仮定しています。つまり、$ response ['details']は空ですか? –

関連する問題