Получение наименьшего значения полей с разными массивами

Я создал следующий массив в PHP с помощью Google Distance Matrix API.

Теперь мне нужно сравнить [distance], получите наименьшее значение и сохраните ключ массива в переменной. Как мне это сделать?
я смотрел на min() но это не похоже на работу с несколькими массивами.

Array
(
[utrecht_cs] => Array
(
[name] => utrecht_cs
[address] => 3511 AX Utrecht, Netherlands
[distance] => 95
)

[groningen_cs] => Array
(
[name] => groningen_cs
[address] => 9726 AC Groningen, Netherlands
[distance] => 102.47
)

[zwolle_cs] => Array
(
[name] => zwolle_cs
[address] => 8011 CW Zwolle, Netherlands
[distance] => 2.54
)

)

0

Решение

Вы могли бы использовать uasort() отсортировать ваш массив. Затем вы можете получить первый ключ, используя key().

$array = array(
'utrecht_cs' => array(
'name' => 'utrecht_cs',
'address' => '3511 AX Utrecht, Netherlands',
'distance' => 95
),
'groningen_cs' => array(
'name' => 'groningen_cs',
'address' => '9726 AC Groningen, Netherlands',
'distance' => '102.47'
),
'zwolle_cs' => array(
'name' => 'zwolle_cs',
'address' => '8011 CW Zwolle, Netherlands',
'distance' => '2.54'
)
);

uasort($array, function($a, $b) { return $a['distance'] <=> $b['distance']; });
$first_key = key($array);

Выход:

zwolle_cs

Вы также можете использовать (для версии PHP до 7.0):

uasort($array, function($a, $b) {
return $a['distance'] < $b['distance'] ? -1 : 1;
});
1

Другие решения

Вы хотите использовать usort отсортировать многомерный массив.

http://php.net/manual/en/function.usort.php

function sortNumbers($a, $b)
{
return $a['distance'] <=> $b['distance'];
}

usort($yourArray,'sortNumbers');

Прочитайте это для получения дополнительной информации https://delboy1978uk.wordpress.com/2012/09/19/sorting-multidimensional-arrays-using-php/

0

Альтернативная сортировка. Извлечь distance столбец из массива и сортировка по нему, сортировка исходного массива на основе этого:

array_multisort(array_column($array, 'distance'), $array);
$result = key($array);
0
По вопросам рекламы [email protected]