I got some data set and it must be mapped, grouping duplicates, like this:
I have:
<?php
$var = array(
array("Name" => "Alfred", "Number" => 1),
array("Name" => "Alfred", "Number" => 2),
array("Name" => "Alfred", "Number" => 3),
array("Name" => "Aethelstan", "Number" => 4),
array("Name" => "Aethelstan", "Number" => 5),
array("Name" => "Aethelstan", "Number" => 6),
)
?>
I want to change it to:
<?php
$var = array(
array("name" => "Alfred","Number" => array(1,2,3)),
array("name" => "Aelthestan","Number" => array(4,5,6)),
)
?>
Someone has any ideas without lots of loops and one-by-one comparisons?
Hope this will work.
<?php
$var = array(
array("Name" => "Alfred", "Number" => 1),
array("Name" => "Alfred", "Number" => 2),
array("Name" => "Alfred", "Number" => 3),
array("Name" => "Aethelstan", "Number" => 4),
array("Name" => "Aethelstan", "Number" => 5),
array("Name" => "Aethelstan", "Number" => 6),
);
$result=array();
foreach($var as $value)
{
if(!isset($result[$value["Name"]]))
{
$result[$value["Name"]]=array("Name"=>$value["Name"],"Number"=>array($value["Number"]));
}
else
{
$result[$value["Name"]]["Number"][]=$value["Number"];
}
}
$result=array_values($result);
print_r($result);
Output:
Array
(
[0] => Array
(
[Name] => Alfred
[Number] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
[1] => Array
(
[Name] => Aethelstan
[Number] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
)
)