问题
Let's suppose we have a multidimensional array like below:
$obj = array
(
array("carName"=>"Volvo","carColor"=>"Red", "carSpeed"=> "100 mph"),
array("carName"=>"Volvo","carColor"=>"Blue", "carSpeed"=> "100 mph"),
array("carName"=>"BMW","carColor"=>"White", "carSpeed"=> "120 mph"),
array("carName"=>"BMW","carColor"=>"Grey", "carSpeed"=> "120 mph")
);
How can I combine the "carColor" of every "carName" in a single array so that I get:
$newObj = array
(
array("carName"=>"Volvo","carColor"=> array("Red", "Blue"), "carSpeed"=> "100 mph"),
array("carName"=>"BMW","carColor"=> array("White", "Grey"), "carSpeed"=> "120 mph")
);
回答1:
If you name each array with the car name (not sure if that matters) you can do it this way
foreach($obj as $x=>$y){
$new[$y['carName']]['carName']=$y['carName'];
$new[$y['carName']]['carColor'][]=$y['carColor'];
$new[$y['carName']]['carSpeed']=$y['carSpeed'];
}
来源:https://stackoverflow.com/questions/46775864/find-all-items-with-the-same-key-in-array-and-combine-them-in-a-new-one