2010-12-06 72 views
0

我有這樣的代碼在這裏:PHP的數組問題

if (in_array('mystring', $entry->getCategories()->getValues())) 
{ 
    ... //do somethingA 

這工作。

但是,如果「mystring」或「mYstring」或「MYSTRING」是這種情況,我想允許somethingA運行。

所以我已經試過像這樣:

if (in_array(array('OCC', 'OCc','Occ', 'occ', 'ocC','oCC', 'oCc', 'OcC'), $entry->getCategories()->getValues())) 
{ 

但我什麼也沒得到恢復。我在這裏錯過了什麼?

非常感謝, MEM

+0

那麼,getValues()返回什麼? – 2010-12-06 18:10:14

+0

@Pekka - 這是一個預期的字符串,所以我猜。 (真的,我沒有轉儲他們,我只是認爲問題會在這in_array錯過使用,顯然是這樣。幸運的猜測,我應該有更多的傾倒它 – MEM 2010-12-06 18:20:32

回答

5

in_array()不能比較兩個數組的值,也無法不區分大小寫比較字符串。從manual

如果needle是字符串,則比較是區分大小寫的方式進行。

你可以試試這個技巧。地圖strtolower()的類別陣列所以一切都是小寫的,然後搜索數組爲小寫字符串:

$cats_lower = array_map('strtolower', $entry->getCategories()->getValues()); 

if (in_array('mystring', $cats_lower)) 
{ 
    // Do something 
} 
1

東西是更長遠的保障(嘗試包括長字符串的所有可能的組合),請嘗試:

if (in_array(strtolower('myStrIng'), array_map(strtolower, $entry->getCategories()->getValues()))) { 
    // do something 
} 
0
foreach($entry->getCategories()->getValues() as $val) { 
    if(preg_match("/$val/i", "occ") { 
    somethingA(); 
    } 
}