2016-07-14 11 views
0

私は多次元配列を持っていますが、キー値に基づいて配列をグループ化しようとしています。多次元配列をKey値でグループ化しますか?

キーでグループ化しようとしていますが、キー値に基づいて のグループをグループ化することはできません。

以下

あなたの最初の配列が$source呼び出された場合、私は必要なもの、オリジナルの配列

Array 
    (
     [0] => Array 
      (
       [User] => Array 
        (
         [id] => 2 
         [feature] => AddUser 
         [feature_level] => 1 
         [parent_feature] => 1 
        ) 

      ) 

     [1] => Array 
      (
       [User] => Array 
        (
         [id] => 3 
         [feature] => EditUser 
         [feature_level] => 1 
         [parent_feature] => 1 
        ) 

      ) 

     [2] => Array 
      (
       [Candidate] => Array 
        (
         [id] => 5 
         [feature] => AddCandidate 
         [feature_level] => 1 
         [parent_feature] => 4 
        ) 

      ) 

     [3] => Array 
      (
       [Candidate] => Array 
        (
         [id] => 6 
         [feature] => EditCandidate 
         [feature_level] => 1 
         [parent_feature] => 4 
        ) 

      ) 

    ) 

Array (

    [User] => Array (
      [0] => Array (
        [id] => 2 
        [feature] => AddUser 
        [feature_level] => 1 
        [parent_feature] => 1 
        ) 
      [1] => Array (
        [id] => 3 
        [feature] => EditUser 
        [feature_level] => 1 
        [parent_feature] => 1 
        ) 
     ) 

    [Candidate] => Array (
      [0] => Array (
        [id] => 5 
        [feature] => AddCandidate 
        [feature_level] => 1 
        [parent_feature] => 4 
       ) 

      [1] => Array (
        [id] => 5 
        [feature] => EditCandidate 
        [feature_level] => 1 
        [parent_feature] => 4 
       ) 
     ) 

) 

答えて

2

ここにはデモが含まれています。あなたを助けるかもしれない:デシベルからフェッチDemo

1

で、これはそれを行う必要がある。

$result =[]; //final array 
foreach($source as $data){ 
    $type = key($data); //eg: 'Candidate' or 'User' 
    if(!isset($result[$type])) $result[$type]=[]; 
    $result[$type][] = reset($data); 
} 

Demo here

+0

ユーザーと候補値は動的であるためここで

// $myArr is your origional array. $result_arr = []; array_walk($myArr,function($v,$k) use (&$result_arr){ $result_arr[key($v)][] = $v[key($v)]; }); print_r($result_arr); 

クリックして、それが親機能のようなもので、追加、編集、子機能のようなものです – 0015

+0

あなたWRTの親と子をマップする必要があります「User」と「Candidate」よりも多くのユーザータイプが存在する可能性があることを意味しますか?あなたは 'Admin'や 'Mods'も持っている可能性があります... – BeetleJuice

+0

はい、また、User-> adduser、User-> viewUser-> viewResumeのようになるかもしれません。この場合に行うべきこと 親はUserです。その子はView Userであり、view userはviewresumeです。 この場合の対応 – 0015