一直試圖找出這個簡單的問題3天,不明白爲什麼該函數只刪除一些值,但留下其他人。(Needle,Haystack)with 2 arrays,confused
這是功能檢查壞域的列表與良域的列表,如果它發現一個壞域,它將它從好域列表中刪除。
這裏是我的代碼:
// check each bad domain, against each array in good array list
$bad_domains = array('youtube.com', 'facebook.com', 'google.com', 'twitter');
$good_domains = array(
'http://www.wufoo.com/',
'https://plus.google.com/u/0/b/105790754629987588694',
'http://studioduplateau.com/ss=',
'http://twitter.com/?lang=tic-toc',
'http://twitter.com/?lang=KA-BOOM',
'http://twitter.com/?lang=tic-toc',
'http://twitter.com/?lang=KA-BOOM',
'http://twitter.com/?lang=tic-toc',
'http://twitter.com/?lang=KA-BOOM',
'http://twitter.com/?lang=tic-toc',
'http://twitter.com/?lang=KA-BOOM',
'http://twitter.com/?lang=KA-BOOM',
'lastofthemohicans.com'
);
function remove_excluded_domains($good_domains, $bad_domains) {
for($x=0; $x<count($bad_domains); $x++)
{
for($y=0; $y<count($good_domains); $y++)
{
if(strpos($good_domains[$y], $bad_domains[$x]))
{
unset($good_domains[$y]);
$good_domains = array_values($good_domains);
}
}
}
return $good_domains;
}
$spider_array = remove_excluded_domains($good_domains, $bad_domains);
出於某種原因,它返回:
[0] => http://www.wufoo.com/
[1] => http://studioduplateau.com/ss=
[2] => http://twitter.com/?lang=KA-BOOM
[3] => http://twitter.com/?lang=KA-BOOM
[4] => http://twitter.com/?lang=KA-BOOM
[5] => http://twitter.com/?lang=KA-BOOM
[6] => lastofthemohicans.com
所以它刪除所有http://twitter.com/?lang=tic-toc,但保留所有http://twitter.com/?lang=KA-BOOM ..
爲什麼它這樣做?我嘗試玩array_values,但它仍然無法正常工作。
對不起,傻陣列值,只是希望它突出,所以它更清晰。感謝你的幫助。
哇,謝謝!根據Arman的評論,我也意識到,如果我在循環之外添加了一個域計數器,它不會減少計數($ good_domains)。但是你的解決方案更加優雅。謝謝! –