2013-10-31 152 views
2

爲了檢查一個子存在於字符串:檢查是否任何數組包含字符串 - strpos

if (strpos($haystack,$needle)!==false) {...} 

但需要檢查是否任何數組包含字符串。

對於前:檢查「奧蘭」中包含的任何$價值改編

$arr=array('orange1','orange2','orange3') 

總是可以做到的foreach和analysze與strpos每個數組值。

但是,有沒有一個優雅和不錯的選擇?

+1

沒有內置的功能來做這個AFAIK。 'foreach'循環可能是最好的。你可以使用'array_filter()',但通過'foreach'你可以在第一場比賽中停止,而不是檢查每一個元素。 – Barmar

+1

http://us3.php.net/preg_grep –

+0

嘗試preg_grep, 一個較早的帖子在http://stackoverflow.com/questions/8627334/how-to-search-in-array-with-有實例preg-match – keenydev

回答

3

這個怎麼樣?

$arr = array('for', 'antlr'); // implode would make 'forantlr', which contains 'oran' 
+0

看起來像一個可怕的'解決'到一個不存在的問題。只需使用一個循環。 – Supericy

+0

@Supericy解釋爲什麼這是可怕的。同樣,op表示他知道如何使用循環,並且正在尋找*替代*。就是這樣。更重要的是,這很可能比使用循環更快。 – Madbreaks

+0

這將如何比只使用循環更快?你正在構建一個巨大的字符串(將你使用的內存量翻倍),無論如何這需要遍歷整個數組。你儘管回答了這個問題(儘管現在你不能在針頭中使用空間),所以也許我的評論應該是在問題上,而不是你的答案。 – Supericy

1
foreach ($arr as $a) { 
    if (strpos($a,'oran') !== false) { ... } 
} 

我知道我們都在想着反正這個:

if(strpos(implode(' ', $arr), 'oran') !== false){...} 

,所以你不小心做你需要的空間分離。 /線。

相關問題