我有两个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]))总是真的,我认为