如何根据值[重复]过滤此数组

This question already has an answer here:

I would like to filter the array according to (total_mark keys) value. I mean The array filter max value to minimum value

 $array = Array(
        [0] => Array
            (
                "roll_n" => 1,
                "total_mark" => 250
            )

        [1] => Array
            (
                "roll_n" => 2,
                "total_mark" => 388
            )

        [2] => Array
            (
                "roll_n" => 3,
                "total_mark" => 518
            )

    )  

My expected output :

$array = Array(
        [0] =Array
            (
                "roll_n" => 1,
                "total_mark" => 518
            )

        [1] = Array
            (
                "roll_n" => 2,
                "total_mark" => 388
            )

    )

Thanks in advance....

</div>

You can just use usort to sort your type of multi dimensional array:

 usort($array, "custom_sort");

 function custom_sort($a,$b) {
      return $a['total_mark']<$b['total_mark'];
 }
    print_r ($array);

See the PHP reference: USORT

Full PHP file:

<?php
 $array = Array(
            Array
            (
                "roll_n" => 1,
                "total_mark" => 250
            ), Array
            (
                "roll_n" => 2,
                "total_mark" => 388
            ),Array
            (
                "roll_n" => 3,
                "total_mark" => 518
            )
    );

    echo '<pre>';
    print_r($array);
    echo '</pre><hr>';

    echo '<pre>';

     usort($array, "custom_sort");

     function custom_sort($a,$b) {
          return $a['total_mark']<$b['total_mark'];
     }

     $i = 0;
     $array2 = array();
     foreach ($array as $arr){
         $arr['roll_n'] = $i;
         $i++;
         $array2[$i] = ['roll_n' => $i, 'total_mark' => $arr['total_mark']]; 
     }
    print_r ($array2); // Final Output

    echo '</pre>';
?>