2015-04-02 6 views
0

У меня есть массив серии значений, как:Найти совпадающий значение массива с заданным значением

$series = [100,300,500,800,1000,3000,5000,10000,15000,20000]; 

Другое значение получают из БД, как:

$point = $data[‘earned_point’]; 

мне нужен высокий матч с сериал. таких, как я получил значение из БД (1500) самый высокий матч значения в серии 1000, так что мне нужно, чтобы получить $ серии [4] и сделать его

$reward = $series[4] * 0.1; 

Я побегу его в цикл, чтобы сделать это для всех значений, полученных из БД.

+0

Пожалуйста, введите пример из ввода и ожидаемого вывода. – Rizier123

+0

В чем проблема? Обратите внимание, что вам нужны прямые одиночные или двойные кавычки, не фигурные кавычки. – jeroen

+0

'$ reward = $ series [$ point]/10' – adeneo

ответ

1

Я отправляю альтернативный код, принятого ответа пока является правильным может быть очень неэффективным, если вы работаете с большим массивом.

<?php 

function computeReward($series, $point, $percent = 0.1){ 
    arsort($series); // sort the series in reverse so we can pass any array and the highest number will be the first because we are looking for a number lower or equal to our point 

    foreach($series as $min_point){ 
     if($min_point <= $point){ 
      return $min_point * $percent; // return the min_point * the percentage, this stops the loop there for being more efficient 
     } 
    } 
} 

$series = [100,300,500,800,1000,3000,5000,10000,15000,20000]; 
$point = $data['earned_point']; 

$reward = computeReward($series, $point); 

?> 
0

Вы хотите иметь в виду, какой наивысший элемент $ series равен или меньше $ point?

<?php 
$series = [100,300,500,800,1000,3000,5000,10000,15000,20000]; 
$point = $data['earned_point']; 

foreach ($series as $min_point) { 
    if ($point >= $min_point) { 
     $matched_min_point = $min_point; 
    } 
} 
$reward = $matched_min_point*0.1; 

Позвольте мне знать, если это работает для вас

+0

Мне нужен самый высокий матч из серии. например, я получил значение от db (1500), наибольшее совпадение значения - 1000 в серии, поэтому мне нужно получить $ series [4] и сделать его $ reward = $ series [4] * 0.1; –

+0

Спасибо @albertdiones это работает ....! –

Смежные вопросы