Обработка числе из массива [PHP]
Есть массив вида:
Код:
$chisla = array("23", "12", "45", "1", "87", "57", "42", "3", "81", "2", "22", "19");
Пользователь вводит число и скрипт должен подобрать наиболее близкое значение из массива, но в сторону увеличения.
Например, пользователь ввёл число 3. Скрипт должен в таком случае выдать число 12.
Если же пользователь ввёл число, которое больше, чем самое великое значение из массива, то скрипт должен выдать наименьшее число из него.
Например, пользователь ввёл 123, скрипт должен выдать 1.
Помогите пожалуйста это реализовать на PHP. Может быть есть какая-то уже готовая функция? Спасибо за внимание.
Код:
<?php
function getx( $c, $chisla )
{
$min = $chisla[0];
$razn = 1000000000;
$tc = -1;
for ($i=0, isset($chisla[$i]); $i++)
{
if ( $min > $chisla[$i] ) $min = $chisla[$i];
if ( ($chisla[$i] >= $c) && ($ranz > $chisla[$i]-$c ) )
{
$razn = $chisla[$i]-$c;
$tc = $chisla[$i];
}
}
if ( $tc = -1 ) return $min; else return $tc;
}
?>
function getx( $c, $chisla )
{
$min = $chisla[0];
$razn = 1000000000;
$tc = -1;
for ($i=0, isset($chisla[$i]); $i++)
{
if ( $min > $chisla[$i] ) $min = $chisla[$i];
if ( ($chisla[$i] >= $c) && ($ranz > $chisla[$i]-$c ) )
{
$razn = $chisla[$i]-$c;
$tc = $chisla[$i];
}
}
if ( $tc = -1 ) return $min; else return $tc;
}
?>
Код:
function getInt($inputInt=-1) {
$chisla = array(23,12,45,1,87,57,42,3,81,2,22,19);
sort($chisla);
reset($chisla);
if($inputInt > $chisla[count($chisla)-1] || $inputInt < $chisla[0]) return $chisla[0];
for($i=0;$i<count($chisla);$i++) {
if($chisla[$i] == $inputInt) return $chisla[$i];
if(!isset($chisla[$i+1])) return $chisla[0];
if($inputInt > $chisla[$i] && $inputInt < $chisla[$i+1]) return $chisla[$i+1];
}
}
$chisla = array(23,12,45,1,87,57,42,3,81,2,22,19);
sort($chisla);
reset($chisla);
if($inputInt > $chisla[count($chisla)-1] || $inputInt < $chisla[0]) return $chisla[0];
for($i=0;$i<count($chisla);$i++) {
if($chisla[$i] == $inputInt) return $chisla[$i];
if(!isset($chisla[$i+1])) return $chisla[0];
if($inputInt > $chisla[$i] && $inputInt < $chisla[$i+1]) return $chisla[$i+1];
}
}
Вот.. Код не проверял. Но логику показал. Работать должно.
ЗЫ: тема для студентов ниже
Neutral, UAS спасибо огромное за ответы. Разобрался. Всё работает :)