Разрабатываю сайты

БЛОГ ПРО WEB

Рассказываю о web-разработке
и помогаю создавать сайты

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);

Задача выполнена )


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *