Reputation: 121
I have an multi dimensional array i am trying to group the array based on the key value.
So, I'm trying to group them by key but i am not getting to group the array based on the key values.
Below is the original array
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
)
)
)
What i need is
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
)
)
)
Upvotes: 0
Views: 2987
Reputation: 40886
If your initial array is called $source
, this should do it:
$result =[]; //final array
foreach($source as $data){
$type = key($data); //eg: 'Candidate' or 'User'
if(!isset($result[$type])) $result[$type]=[];
$result[$type][] = reset($data);
}
Upvotes: 1