php如何在小于数值的数组值中查找元素的索引?

时间:2018-08-15 02:38:36

标签: php arrays

说,有一个数组和一个数字:

$values = ['a'=>10, 'b'=>20, 'c'=>30];
$num = 25;

如何找到其值小于数字的数组元素的索引?

在上面的示例中,它的'b'索引为1。

4 个答案:

答案 0 :(得分:0)

您可以按值对数组进行排序,然后循环遍历,直到在$num上方击中一个数字。这是一个简单的示例:

$values = ['a'=>10, 'b'=>20, 'c'=>30];
$num = 25;
$sortedValues = $values;
asort($sortedValues);
while (($current = current($sortedValues)) !== false && $current < $num) {
    $lastValue = key($sortedValues);
    next($sortedValues);
}
echo $lastValue;

答案 1 :(得分:0)

我明白了

$values = ['a'=>1, 'b'=>20, 'c'=>30, 'd'=>40, 'e'=>50];
$num = 55;
$i = null;
foreach ($values as $k => $v){
    if ($v == $num){
        echo $v;
        break;
    }
    elseif ($num >= 1 && $v > $num){
        echo $values[$i];
        break;
    }
    elseif ($num > end($values)){
        echo end($values);
        break;
    }
    $i = $k;
}

答案 2 :(得分:0)

可能array_filter会更方便一些:

$values = ['a'=>1, 'b'=>20, 'c'=>30, 'd'=>40, 'e'=>50];
$num = 45;

// filter items less than $num
$lesser = array_filter($values, function($v) use($num) { 
  return $v < $num;
});

// get necessary item/index from filtered, last for example
$lesserKeys = array_keys($lesser);
$lastOfLessKey = end($lesserKeys);
$lastOfLess = end($lesser);
var_dump($lastOfLessKey, $lastOfLess); // d 40

答案 3 :(得分:0)

    $values = ['a'=>10, 'b'=>20, 'c'=>30];
    $num = 25;

foreach($value as $key => $val){
    if( (int) $val == (int) $num){
         echo 'this is what you are searching. key is: '.$key.', value is: '.$val;
}


}