如何编码[find-array-in-array]
功能?
伪代码
Haystack:
array(0=a, 1=b, 2=a, 3=b, 4=c, 5=c, 6=a, 7=b, 8=d, 9=c, 10=a, 11=b, 12=a, 13=b, 14=c);
Needle:
array(a, b, c);
Return:
array ( array (2, 3, 4), array(12, 13, 14) )
Desired:
Haystack 中的钥匙与 Needle 相匹配。上面应该给出 2 个匹配项:
- 比赛 = 干草堆 2-4
- 比赛 = 干草堆 12-14
应该找不到"a b"
, "a b d"
nor "c a b"
ETC。,
仅 Needle 中每个值的实例 - 按指定顺序。
我想让它成为一个函数,这样我就可以重复运行它(我有很多这样的模式)。
我尝试过使用嵌套的 foreach 来做到这一点,并用计数器等让自己发疯。
我到了一定程度,无法区分匹配和不匹配。
(惊讶没有内置功能?in_array
and array_intersect
好像只适合个人价值,不适合收藏?)
$haystack = array('a','b','a','b','c','d','a','b','c');
$needle = array('a','b','c');
$CountH = count($haystack); echo $CountH."<br/>";
$CountN = count($needle); echo $CountN."<br/>";
$matches ='';
foreach ($haystack as $key1=>$haystackval){
foreach ($needle as $key2=>$needleval) {
$fail = '0';
//if (in_array($needleval, $haystack)) {
if ($key2[$needleval] === $haystackval && $fail === '0') {
echo "Got needleval - ".$needleval ."<br/>";
}
else { $fail='1';
}
}
}