2016-05-05 1 views
0

私のPHPアプリケーションでは、DBから結果を取得します。結果を処理した後、私はforeachの多次元配列に値を挿入する

Iは、共通の、一般的な目的値 アレイ状に配列に格納されているいくつかの意思値を有する
Array 
(

[1] => Array -----> This is intent 1, this key indicates all intent values which is equal to 1, should belongs to here. 

    (
     [0] => Array 
      (
       [name] => A 
       [indent] => 1 
      ) 

     [1] => Array 
      (
       [name] => B 
       [indent] => 1 
      ) 

    ) 

[2] => Array 
    (
     [0] => Array 
      (
       [name] => B 
       [indent] => 2 
      ) 

     [1] => Array 
      (
       [name] => A 
       [indent] => 2 
      ) 

    ) 

[3] => Array 
    (
     [0] => Array 
      (
       [name] => A 
       [indent] => 3 

      ) 

    ) 
) 

を用いて以下のように結果を変換する必要がある(「1」=>配列(配列[0 ]、array [1]));

私が試したことはこれは古い配列を置き換えると共通である最後の意思値を挿入します

foreach($results as $data){ 
     $root_array[$data['intent']] = array($data); 
} 

です。私は以下のような結果を得る

、意図1と意図2は、現在のインデントが初期化されているかどうかをチェックしなければならない最後のデータのループで

Array 
(

[1] => Array 

(


    [0] => Array 
     (
      [name] => B 
      [indent] => 1 
     ) 

) 

[2] => Array 
(

    [0] => Array 
     (
      [name] => A 
      [indent] => 2 
     ) 

) 

[3] => Array 
(
    [0] => Array 
     (
      [name] => A 
      [indent] => 3 

     ) 

) 
) 

答えて

2

に置き換えられます。そうでない場合は作成し、そうでなければ新しいデータを追加します。

foreach($results as $data) { 
    if (!isset($root_array[$data['indent']])) { 
     $root_array[$data['indent']] = array($data); 
    } else { 
     $root_array[$data['indent']][] = $data; 
    } 
} 
+1

ありがとうございました。 – Vini

+1

あなたはようこそ!問題ない!あなたが準備ができたら:) –