我在数组中有一系列值,例如:
$values = array(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5);
我需要找到该数组中大于或等于指定数字的最小值的索引。例如,如果用户输入 0.25,我需要知道第一个数组索引是 2。
在我使用过的其他语言中,例如 R,有一个“which”函数将返回满足某些条件的索引数组。我在 PHP 中没有发现,所以我希望其他人已经解决了这个问题。
谢谢。
我在数组中有一系列值,例如:
$values = array(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5);
我需要找到该数组中大于或等于指定数字的最小值的索引。例如,如果用户输入 0.25,我需要知道第一个数组索引是 2。
在我使用过的其他语言中,例如 R,有一个“which”函数将返回满足某些条件的索引数组。我在 PHP 中没有发现,所以我希望其他人已经解决了这个问题。
谢谢。
您可以使用array_filter
它完全符合 R 的功能。
您可以使用以下工作逻辑。可能还有其他内置函数可用于解决此问题。
<?php
$values = array(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5);
$search=0.35;
$result_index = NULL;
$result_value=NULL;
$count=count($values);
for($i=0;$i<$count;$i++) {
if($values[$i]<$search) {
continue;
}
if($result_index==NULL) {
$result_index = $i;
$result_value = $values[$i];
continue;
}
if($values[$i]<$result_value) {
$result_index = $i;
$result_value = $values[$i];
}
}
print $result_index . " " . $result_value;
?>
您可以构建自己的自定义函数:
function findIndex($input_array, $num)
{
foreach($input_array as $k => $v)
{
if($v >= $num)
{
return $k;
}
}
return false;
}
此函数将返回数组索引(键)。如果您不想要索引,而是想要值,那么这里发布的其他函数就可以完成这项工作。你应该澄清你到底想得到什么,因为你的问题有点模棱两可
希望这个功能对你有帮助,
function find_closest_item($array, $number) {
sort($array);
foreach ($array as $a) {
if ($a >= $number) return $a;
}
return end($array); // or return NULL;
}
我不知道是否有内置函数,但这应该可以工作:
function getClosest($input, $array)
{
foreach($array as $value)
{
if ($value >= $input)
{
return $value;
}
}
return false;
}