我喜欢这个问题,也喜欢不同的解决方案。虽然我来晚了,但这是我的尝试。我不知道它在大数据集成本方面如何比较,但这应该相当健壮。
我的尝试只是遍历每个元素,然后创建一个与搜索数组大小相同的第二个数组,最后进行比较检查。
代码:
function checkArray($a, $b){
$test = FALSE;
for($i = 0; $i < count($a); $i++){
for($j = 0; $j < count($b); $j++){
$array[] = $a[$i + $j];
}
if($array == $b){
$test = TRUE;
break;
}
unset($array);
}
return $test;
}
$sample = ['A', 'B', 'C', 'D', 'E', 'F'];
$match = ['B', 'C', 'D'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$match = ['C', 'D', 'B'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$match = ['B', 'D', 'E'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$match = ['A', 'B', 'C'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$match = ['A'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$match = ['F'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$sample = ['A', 'C', 'C', 'D', 'E', 'F'];
$match = ['C', 'D', 'E'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
$sample = ['C', 'D', 'E'];
$match = ['A', 'C', 'C', 'D', 'E', 'F'];
echo checkArray($sample, $match) ? "true\n" : "false\n";
这将输出:
true
false
false
true
true
true
true
false