Using usort like the following:
<?php
$arrayPersonas = array(
array('id'=> "0AB239", 'country' => 1, 'firstname' => "Ernest" , 'surname' => "Austin", 'age' => 30),
array('id'=> "12A179", 'country' => 0, 'firstname' => "Frances", 'surname' => "Poole", 'age' => 23),
array('id'=> "1A90B9", 'country' => 1, 'firstname' => "Jacob", 'surname' => "Matthews", 'age' => 30),
array('id'=> "227FF9", 'country' => 2, 'firstname' => "Mina", 'surname' => "Day", 'age' => 30),
array('id'=> "2A6F39", 'country' => 3, 'firstname' => "Earl", 'surname' => "Mills", 'age' => 40),
array('id'=> "325E79", 'country' => 4, 'firstname' => "Dennis", 'surname' => "Ray", 'age' => 33),
array('id'=> "32E478", 'country' => 4, 'firstname' => "Alex", 'surname' => "Fery", 'age' => 50),
array('id'=> "3A4DB9", 'country' => 5, 'firstname' => "Rhoda", 'surname' => "Conner", 'age' => 35));
$final_data = array();
function sortByOrder($a, $b) {
return $a['age'] + $b['age'];
}
foreach( $arrayPersonas as $person){
if(!empty($final_data[$person['country']])){
foreach( $final_data[$person['country']] as $key => $value ){
if( $final_data[$person['country']][$key]['age'] < $person['age'] ){
unset($final_data[$person['country']][$key]);
$final_data[$person['country']][] = $person;
}else if( $final_data[$person['country']][$key]['age'] == $person['age'] ){
$final_data[$person['country']][] = $person;
}
}
}else{
$final_data[$person['country']][] = $person;
usort($final_data[$person['country']], 'sortByOrder');
}
}
print_r($final_data);
Code Snippet Sandbox : http://sandbox.onlinephpfunctions.com/code/8ffed1ebb2940fc71cd35cb8bfddae2e8ca3077c
CLICK HERE to find out more related problems solutions.