Как выполнить mysql как сортировку в массиве php?

$myarray=
Array ( [0] => Array ( [id] => 4
                       [name] => ABC
                       [point] => 2111 
      ) [1] => Array ( [id] => 5
                       [name] => XYZ 
                       [point] => 1305 )




$points = array_map(function($myarray) {
        return $store[0];
    }, $myarray);

 $maxpoint=max($points)

Но как я получу id человека с максимальным количеством очков? В основном мне нужно получить строку (или внутренний массив), где точка максимальна.

Как можно выполнить сортировку mysql в этом массиве, используя только php?

Пожалуйста помоги

2 ответа

Решение

Вы можете комбинировать их, но вот общие шаги:

// extract all points and get the max()
$maxpoint = max(array_column($myarray, 'point'));

// get the key of the array with the max points
$key = array_search(array_column($myarray, 'point'), $maxpoint);

// get the id using the key
$id = $myarray[$key]['id'];

// or get the entire array
$result = $myarray[$key];

Другим вариантом является сортировка по point по убыванию, так что всегда будет индекс 0:

array_multisort(array_column($myarray, 'point'), SORT_DESC, $myarray);

echo 'id ' . $myarray[0]['id'] . ' has ' . $myarray[0]['point'] . ' points';

Ничего плохого в принятом ответе (на самом деле это здорово), но если все, что вам нужно, это человек с наивысшим баллом, вам не нужно сортировать массив. Вы можете просто выполнить итерацию и отслеживать самый высокий указатель на ходу.

$person['point'] = 0; // starting value

foreach ($myarray as $row) {
    if ($row['point'] > $person['point']) {
        $person = $row; // replace $person with new highest points person
    }
}
Другие вопросы по тегам