在PHP中搜索数组,提高性能


Searching a array in PHP, performance improvements

我有两个A和B数组,第一个(A)是简单数组,第二个(B)是数组数组。我想知道A中的某个元素是否等于B中的元素。为此,我目前正在进行嵌套循环,这会导致n^3的复杂性。我该如何改进。

for ($i = 0; $i <= count($A); $i++) {
    if (isset($A[$i])) {
        foreach ($B as $items) {
            foreach ($items as $item) {
                if ($item['Column1'] == $A[$i]['Column1']) {
                    array_push(A, "result");
                    unset($A[$i]);
                    unset($items);
                    break;
                }
            }
        }
    }
}
array_walk_recursive($B, function($val) {
  if (in_array($val, $A)) echo "$val is in the '$A array!";
});

试试这个,array_seacrh()将删除你的一个foreach循环:

for ($i = 0; $i <= count($A); $i++) {
    if (isset($A[$i])) {
        foreach ($B as $items) {
            $t = array_search($A[$i]['Column1'], $items);
            array_push($A, "result");
            unset($A[$i]);
            unset($items[$t]);
        }
    }
}

创建数组时,您可以创建$lookup_a和$lookup_B数组,其中键是原始$a和$B 的值

然后你可以在$lookup_a上做一个简单的循环,并检查是否(isset($lookup_B[$lookup_a_key])

同样在你的例子中,如果(isset($A[$i]))总是真的,我认为