2012-03-27 96 views
1

基本上,我有一個字符串數組來搜索。如果只有一個字符串,stristr將完美工作。但是,因爲它是一個數組,所以我能想到的唯一方法就是運行一個foreach循環,並從每次迭代中得到一個字符串。在PHP中,是否有像stristr這樣的函數,但是對於數組?

確實有更好的方法來做到這一點,我只是不知道它。有人可以幫我從這裏出去嗎?

編輯

例如,說我有此數組:

$array = array("string1", "foo", "bar", doowop");

與此字符串:

$string = "aw dang man lets go to that bar";

我需要的,如果$string弄清楚包含數組中的一個字符串。

+0

stristr不只是搜索,而是返回字符串的一部分。所以請澄清你的問題 - 你需要檢查字符串(haystack)是否包含數組中的任何字符串,或者如果你需要檢查它是否包含所有的字符串,或者什麼? – 2012-03-27 13:56:13

+0

@MarkBaker:你在想'stripos()'。它會返回一部分字符串,無論是在匹配的針之前還是之後。 – landons 2012-03-27 14:10:01

+0

對不起......我的不好 – 2012-03-27 14:11:19

回答

2

那麼你將不得不foreach通過數組,因爲stristr函數的點是返回值。

+0

好吧,該死的。看起來有點低效。 – Rob 2012-03-27 14:53:05

+0

是的,似乎效率低下,但我想這是微不足道的,如果數組的大小不是數十萬個元素;-) – clops 2012-03-27 15:36:28

0

最接近的是array_searchdocs),但它不區分大小寫。或array_keysdocs)。你不會說你想要什麼 - 前者一旦找到匹配就會停下來;後者將返回所有比賽。

+0

如果你用strtolower()小寫標準以及數組,那麼它將成爲case-不敏感的。 – 2012-03-27 13:59:20

+0

'array_search'使用一個數組,並且不能用'strtolower()'小寫整個數組' – 2012-03-27 14:03:12

0

還有array_searchin_array但這兩者都區分大小寫。你可以做這樣的:

$new_array = array_flip($your_array); //exchange keys for values 
$new_array = array_change_key_case($new_array); // lowercases everything 
$new_array = array_flip($new_array); // exchanges your values back 
$your_key = array_search($needle, $new_array); 

$original_value = $your_array[$your_key]; 

不知道如果這是真的不僅僅是循環:)

相關問題