在数组中搜索连续值的最佳方法是什么?
例如,在array('a', 'b')
中搜索array('x', 'a', 'b', 'c')
会产生1
,因为这些值首先会在该索引处连续出现。
答案 0 :(得分:0)
没有测试过这个,但是这样的事情应该做:
function consecutive_values(array $needle, array $haystack) {
$i_max = count($haystack)-count($needle);
$j_max = count($needle);
for($i=0; $i<$i_max; ++$i) {
$match = true;
for($j=0; $j<$j_max; ++$j) {
if($needle[$j]!=$haystack[$i+$j]) {
$match = false;
break;
}
}
if($match) {
return $i;
}
}
return -1;
}
答案 1 :(得分:0)
这可能是次优的,但相当简洁:
$needle = array('a', 'b');
$haystack = array('x', 'a', 'b', 'c');
function searchInArray($haystack, $needle)
{
$keys = array_search($haystack, $needle[0]);
foreach ($keys as $key) {
$endPos = $key + count($needle);
for ($i=1; $i<$count($needle); $i++) {
if ($needle[$i] == $haystack[$key + $i]) {
return $key;
}
}
}
return false;
}
答案 2 :(得分:0)