PHP Минимальное значение массива
Задача была следующая: Вывести id минимального значения цен.
Есть id с их значениями
$arrays = array( '12' => '100', '13' => '79', '14' => '55', '15' => '140' );
Видим что 55 — это минимальное значение, следовательно нам надо получить id этого значения (14).
Для удобства, преобразуем массив в такой формат:
array(4) { [0]=> array(2) { [0]=> int(12) [1]=> string(3) "100" } [1]=> array(2) { [0]=> int(13) [1]=> string(2) "79" } [2]=> array(2) { [0]=> int(14) [1]=> string(2) "55" } [3]=> array(2) { [0]=> int(15) [1]=> string(3) "140" } }
Вот таким фрагментом кода:
foreach($arrays as $k=>$arr){ $prices[] = array($k, $arr); }
Необходимый массив у нас теперь есть. На следующем этапе нам нужна функция с рекурсией для определения минимального значения и конечно id минимального значения. Вот собственно и сама маленькая функция:
function MinPrice($p){ $r = min($p[0][1], $p[1][1]); if($p[1][1] == $r) unset($p[0]); else unset($p[1]); if(count($p) >= 2) MinPrice(array_values($p)); else echo $p[0][0]; return; }
Осталось запустить эту функцию
MinPrice($prices);
Вот и всё! Результат получился: id = 14
На самом деле все выглядит проще и короче, поэтому выложу полный рабочий код:
$arrays = array( '12' => '100', '13' => '79', '14' => '55', '15' => '140' ); function MinPrice($p){ $r = min($p[0][1], $p[1][1]); if($p[1][1] == $r) unset($p[0]); else unset($p[1]); if(count($p) >= 2) MinPrice(array_values($p)); else echo $p[0][0]; return; } foreach($arrays as $k=>$arr){ $prices[] = array($k, $arr); } MinPrice($prices);
Задача выполнена )
Добавить комментарий