如何编写[find-array-in-array]
函数?
伪代码
干草堆:
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);
针:
array(a, b, c);
返回:
array ( array (2, 3, 4), array(12, 13, 14) )
所需:Haystack 中与 Needle 匹配的钥匙。以上应该给出2个匹配项:
- 比赛 = 干草堆 2-4
- 比赛 = 干草堆 12-14
它不应该只查找 Needle 中每个值的实例"a b"
,"a b d"
也不应该以指定的顺序查找。"c a b"
我想让它成为一个函数,这样我就可以重复运行它(我有很多这些模式)。
我试过用嵌套的 foreachs 来做这件事,用计数器等让自己发疯。我到了一定程度,无法将匹配项与非匹配项区分开来。(惊讶于没有内置函数? 似乎仅适用于单个值,而不是集合?in_array
)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';
}
}
}