数组按性别和总数排序[重复]

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