PHP:检查数组是否包含其他数组值(按特定顺序)
我有一个数组:
$haystack = array(1,2,3,4,5,6,7,8,9,10...);
$needle = array(3,4,5);
$bad_needle = array(3,5,4);
如果我检查干草堆是否含有针头,我需要做到真实。 但是如果我检查干草堆是否包含bad_needle,我也需要false。 提示没有foreach的所有干草堆和针头?
$offset = array_search($needle[0], $haystack);
$slice = array_slice($haystack, $offset, count($needle));
if ($slice === $needle) {
// yes, contains needle
}
如果$haystack
中的值不是唯一的,则失败。 在这种情况下,我会走一个很好的循环:
$found = false;
$j = 0;
$length = count($needle);
foreach ($haystack as $i) {
if ($i == $needle[$j]) {
$j++;
} else {
$j = 0;
}
if ($j >= $length) {
$found = true;
break;
}
}
if ($found) {
// yes, contains needle
}
var_dump(strpos(implode(',', $haystack), implode(',', $needle)) !== false);
var_dump(strpos(implode(',', $haystack), implode(',', $bad_needle)) !== false);
尽我所能,一个正在工作的array_slice()仍然需要一个循环:
foreach(array_keys($haystack, reset($needle)) as $offset) {
if($needle == array_slice($haystack, $offset, count($needle))) {
// yes, contains needle
break;
}
}
链接地址: http://www.djcxy.com/p/75353.html
上一篇: PHP: Check if array contains another array values (in specific order)