0

このようなデータベースから結果を取得します。

 array(
         [0] => array( 
                       [type]   => orange,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 
         [1] => array( 
                       [type]   => mango,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 
         [1] => array( 
                       [type]   => apple,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 
         [3] => array( 
                       [type]   => mango,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 

     )

基本的に、これを次の JSON 形式に変換する必要があります。

         "mango" : [{ 
                       "number" : "10",
                       "size"   : "10c",
                       "weight" : "1l"
                     },
                     { 
                       "number" : "12",
                       "size"   : "14c",
                       "weight" : "12"
                     }
                   ],
         "orange" : [{ 
                       "number" : "12",
                       "size"   : "10c",
                       "weight" : "1l"
                     },
                     { 
                       "number" : "12",
                       "size"   : "14c",
                       "weight" : "11"
                     }
                   ],
         "apple" : [{ 
                       "number" : "10",
                       "size"   : "10c",
                       "weight" : "1l"
                     },
                     { 
                   ]

数、サイズ、重量は無視してください。それらは単なる乱数です。ただし、配列の最初の要素には JSON タグが含まれています。これは配列から削除する必要がありますが、JSON のオブジェクトの配列のタグとして取得する必要があります (ご覧のとおり)。

ループや条件などを使用して記述できることはわかっています。既存の組み込みの PHP 関数を使用して、ループや条件を減らしてこれを行うスマートで迅速な方法はありますか?

手順は次のとおりです。

  1. タイプに基づいてアレイの個性をフィルタリングします。多分、ここで3回で3個の果実が取れます。ここで役立つ機能はどれですか? 値に基づいてフィルタリングします。または理想的にはキーと値のペア。
  2. それぞれが 1 種類の果物に対応する 3 つの配列を取得します。すべての配列の type 要素を個別にポップオフします。
  3. 型をループし、型の値をインデックスとして各型に配列を配置します。

他に良い方法はありますか?

4

2 に答える 2

5

次のように、古い配列を新しい配列に再構築します。

$new = array();
foreach($old as $vec){
    $new[$vec['type']] = array(
        'number' => $vec['number'],
        'size' => $vec['size'],
        'weight' => $vec['weight']      
    );
}
echo json_encode($new);
于 2012-08-17T19:13:24.110 に答える
0

最初に必要に応じて配列構造を変更してから、json_encode()を使用します。

于 2012-08-17T19:11:43.387 に答える