Выбор минимальное число из массива, с условием

Есть задача выбрать минимальное число из перечня в массиве (503, 2959, 115, 2899, 3000, 2775, 0). Но с условием, если самое минимальное число - 115, и второе минимальное число в ряду - 503, имеют разницу между собой более 15%, учитывать второе минимальное число - 503.

В свою очередь если второе минимальное число 503, имеет разницу с третьим минимальным числом более 15% - 2775, учитывать третье минимальное число.

Число, которое имеет разницу с соседним минимальным числом менее 15% процентов, будет считаться нужным числом в ряду для переменной $price_monitoring

Работаю в php, сейчас выбирает просто самое минимальное число, без доп условии о 15%

$price_monitoring_nozeros = array_values(array_diff(array(503, 2959, 115, 2899, 3000, 2775, 0), array(0)));
$price_monitoring = empty($price_monitoring_nozeros) ? 0 : min($price_monitoring_nozeros);

echo $price_monitoring;

Ответы (1 шт):

Автор решения: Алексей Сердюк

Решение:

$price_monitoring_nozeros = array_filter(array(503, 2959, 115, 2899, 3000, 2775, 0)); //without zeroes
sort($price_monitoring_nozeros);
$price_monitoring = empty($price_monitoring_nozeros) ? 0 : pos($price_monitoring_nozeros);
$price_monitoring = pos($price_monitoring_nozeros);
while (($el = next($price_monitoring_nozeros)) && $price_monitoring * 1.15 < $el )  $price_monitoring = $el;

var_export([$price_monitoring_nozeros, $price_monitoring]);
echo $price_monitoring;
→ Ссылка