2016-12-12 5 views
0

私はjson_encodedにする必要がある以下の構造を持っています。最終的にそれをデコードしてオブジェクトを取得する。PHPはJSONが同じ名前の複数のArray()をエンコードすることはありません

これにより、名前がmessageの複数のオブジェクトをループさせ、各メッセージを個別に処理することができます。

しかし、コード化された場合、phpはkeymessageの配列のうちの1つ(最後のもの)のみをエンコードします。

$setup = [ 
    'key' => 'demo-7hn3fh83un3yhvfjvnjgknfhjnvf', 

    'message' => [ 
     'number' => [ 
      '+39XXXXXXXX', 
      '+34XXXXXXXX', 
      '+49XXXXXXXX' 
     ], 

     'text' => 'Sample msg 123...', 
    ], 

    'message' => [ 
     'number' => [ 
      '+50XXXXXXXX', 
      '+50XXXXXXXX' 
     ], 

     'text' => 'Something...', 
    ] 
]; 

同じ名前で複数のアレイをエンコードする方法はありますか?

+3

いいえPHPの 'print_r($ setup)'でその構造体を投棄しても、 'message'サブ配列が1つしかないことがわかります。複数のメッセージがある場合は、 'message'自体をサブ構造の配列にする必要があります。これはあなたが変更することができる構造ですか、それとも既にバインドされていますか(非機能性にもかかわらず)? –

+0

FYI:配列に* duplicate *キーを持つことはできません:https://eval.in/695793 –

+0

@MichaelBerkowskiそれに縛られていません。再構成された構造を答えとして掲示する。 – Borsn

答えて

2

感謝を。私は以下のような構造を修正しました。

私がこのような構造になる理由は、1つのリクエストで複数のユーザーに複数のメッセージを送信できるからです。

$setup = [ 
    'key' => 'demo-7hn3fh83un3yhvfjvnjgknfhjnvf', 

    'message' => [ 
     [ 
      'number' => [ 
       '+39XXXXXXXX', 
       '+34XXXXXXXX', 
       '+49XXXXXXXX' 
      ], 

      'text' => 'Sample msg 123...' 
     ], 
     [ 
      'number' => [ 
       '+50XXXXXXXX', 
       '+50XXXXXXXX' 
      ], 

      'text' => 'Something...' 
     ] 
    ] 
]; 
3

あなたは根本問題を見落としてきた:ヒント皆のため

$foo = [ 
    'bar' => 1, 
    'bar' => 2, 
    'bar' => 3, 
]; 
var_export($foo); 
array (
    'bar' => 3, 
) 
+0

まさに問題は 'json_encode'とは何の関係もなく、PHP配列は同じキーを持つ2つの項目を許可しません。これまでのほとんどの配列/オブジェクト/マップと同じです。 –

+2

... JSON自体を含む) –

関連する問題