Reputation: 113
I am having a hard time figuring out how to modify my array. The original array is this...
$array = array(
array(
"fruit" => "pineapple",
"id" => "aaa",
),
array(
"fruit" => "orange",
"id" => "aaa",
),
array(
"fruit" => "apple",
"id" => "bbb",
),
array(
"fruit" => "pear",
"id" => "bbb",
),
array(
"fruit" => "peach",
"id" => "ccc",
),
array(
"fruit" => "melon",
"id" => "ccc",
)
);
I need to convert this array into an array of keys by id. For example I would want the end result to look like this...
$array = array(
"aaa" => array("pineapple", "orange"),
"bbb" => array("apple", "pear"),
"ccc" => array("peach", "melon"),
);
I have attempted to loops through the array and pull out the things I need and rebuild the array but I cant figure it out. Hopefully someone can help me. Thanks!
Upvotes: 2
Views: 487
Reputation: 84
You can do it by making a new array this way:
$array = array(
array(
"fruit" => "pineapple",
"id" => "aaa",
),
array(
"fruit" => "orange",
"id" => "aaa",
),
array(
"fruit" => "apple",
"id" => "bbb",
),
array(
"fruit" => "pear",
"id" => "bbb",
),
array(
"fruit" => "peach",
"id" => "ccc",
),
array(
"fruit" => "melon",
"id" => "ccc",
)
);
// empty array
$result = [];
// loop trough data
foreach($array as $value){
// add item to the $result array. Then make the id the key and the fruit the value
$result[$value['id']][] = $value['fruit'];
}
//print array
print_r($result);
The result will be
Array ( [aaa] => Array ( [0] => pineapple [1] => orange ) [bbb] => Array ( [0] => apple [1] => pear ) [ccc] => Array ( [0] => peach [1] => melon ) )
Upvotes: 2