在数组中搜索数组(带浮点数),给定错误

时间:2014-11-05 21:00:22

标签: php arrays

我正在尝试将特定数组搜索到另一个数组中。我一直在寻找像array_intersect()这样的PHP函数,但这不是我真正需要的。

这是我的麻烦:我有$array_1 = [5.3,5.0,6.7]和$ array_2 = [5.0, 5.2,6.5,7.5,8.25]。我需要在$ array_2中搜索$ array_1数字,并且它们应该是连续的。

在此示例中,结果错误应小于0.5。 所以,我应该在$array_1中找到$array_2,因为数组2中的数组1值存在给定错误。

  • 5.3-5.0 = 0.3(<0.5)
  • 5.0-5.2 = 0.2(<0.5)
  • 6.7-6.5 = 0.2(<0.5)

是否有一个PHP函数会将$ array_1搜索到带有给定eps的$ array_2。错误?我无法在google.com上找到它

我希望每个可以提供帮助的人都明白我的想法和麻烦。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

我不确定您的最终目标,但此代码可能会让您入门:

    $array_1 = array (5.3,5.0,6.7);         #search for this
$array_2 = array (3.0, 4.4, 5.0, 5.2,6.5,7.5,8.25, 5.0, 5.2, 8.2, 5.0, 4.2, 4.1, 5.3,5.0,6.7);  #inside this

$err = 0.5;

$matchkeys= array();

$i = 0;
$tmp_match = '';
foreach ($array_2 as $k => $v) {        #crawl through array_2

        if (abs($v - $array_1[$i]) < $err) {
                echo "match at $k for $i \n";
                if ($i==0) {$tmp_match = $k;}
                $i++;           #if array one matches, then check next array 1 against next array 2
                if ($i == count($array_1)) {    #done matching array_1 ?
                        $matchkeys[] = $tmp_match;      //push first index value of compelte match to array
                        $tmp_match = '';
                        $i = 0;
                }
        }
        else {
                $tmp_match = '';
                $i=0;           #otherwise start over
        }
}

echo "\n\n found complete matches in array_2 at index: \n";
print_r($matchkeys);