Как выполнить 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
}
}