This question already has an answer here:
my list array
Array
(
[0] => Array
(
[id] => 1000044375809533
[likes] => 10
[comments] => 6
[posts] => 41
[gender] => female
)
[1] => Array
(
[id] => 1000043758049533
[likes] => 10
[comments] => 6
[posts] => 41
[gender] => male
)
[2] => Array
(
[id] => 1000040382928633
[likes] => 4
[comments] => 0
[posts] => 0
[gender] => female
)
[3] => Array
(
[id] => 1000003829428633
[likes] => 4
[comments] => 0
[posts] => 0
[gender] => male
)
)
How do I set the list again by gender ?
And then sort by "total = likes + comments + posts"
total = 10 gender = male
total = 8 gender = male
total 10 gender = female
total = 7 gender = female
</div>
Almost identical to your previous question:
function cmp($a, $b) {
if ($a['gender'] == $b['gender']) {
$aSum = $a['likes'] + $a['comments'] + $a['posts'];
$bSum = $b['likes'] + $b['comments'] + $b['posts'];
if ($aSum == $bSum)
return 0;
return ($aSum < $bSum) ? -1 : 1;
}
return ($a['gender'] < $b['gender']) ? -1 : 1;
}
usort($array, "cmp");
See array_multisort function and examples