首页 > 解决方案 > PHP - 如何从第二个数组中的第一个数组中找到一个中间值

问题描述

在两个不同的数组中,我必须在每个 array1 值的值之间找到。

$array1 = array(8,15,26);
$arrayBetween = array ("zero" => 0, "one"=>10,"two" =>20, "three" =>30);

例子:8 is between zero and one.

我没有找到任何可以帮助我的功能。我已经尝试过array_filterorrange但我无法解决它。

标签: phparrays

解决方案


你可以自己写一个简单的循环:

$array1 = array(-1,8,15,26,47);
$arrayBetween = array ("zero" => 0, "one"=>10,"two" =>20, "three" =>30);

foreach($array1 as $value)
{
    // special cases if value is outside arrayBetween bounds
    if($value < min($arrayBetween))
        echo "$value is before " . array_keys($arrayBetween)[0] . PHP_EOL ;
    elseif($value > max($arrayBetween))
    {
        $keys = array_keys($arrayBetween) ;
        echo "$value if after " . end($keys) . PHP_EOL ;
    }
    else
    {
        $prevKey = null ; // store the previous key at each try
        foreach($arrayBetween as $key => $nb)
        {
            if($nb > $value) // we found the first key that has value > current number
            {
                echo "$value is between $prevKey and $key ". PHP_EOL ;
                break; // interval found, can stop the search
            }

            $prevKey = $key ; // save current key to display it if next element is > $value
        }
    }
}

输出 :

-1 在零之前

8 介于零和一之间

15 介于 1 和 2 之间

26 介于二到三之间

47如果在三个之后


推荐阅读