如何對[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))
期望: 從草堆匹配針的鍵。上述應該給2個符合條件:
- 匹配=草堆2-4
- 匹配= 12-14草堆
它不應該找到"a b"
,"a b d"
也不"c a b"
等,僅 的實例Needle中的每個值 - 按照指定的順序。
我想使它成爲一個函數,所以我可以反覆運行它(我有很多這些模式)。
我已經試過用嵌套的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';
}
}
}
乾草堆的每個元素都是單個字符嗎? –
這是一個有點太具體的內置函數。你能向我們展示一些你試圖自己寫的代碼嗎?否則,這只是你要求代碼的一個例子,這並不是真正的 – Pudge601
啊,這是一個有限狀態自動機的美好例子。 –