2014-04-13 77 views
2

我有一個數組通過爆炸字符串形成如下。in_array沒有在數組中找到值

$interest_array = explode(',', $user->interests); 

當我的var_dump這個陣列I得到

array(3) { 
    [0]=> string(19) "Acute critical care" 
    [1]=> string(11) " Cardiology" 
    [2]=> string(20) " Computed Tomography" 
} 

用下面的代碼

if (in_array('Acute critical care', $interest_array)) { 
     echo "selected";} 

I輸出....選擇。 現在,這很好,但我需要這個工作的幾個數組值。隨着例如下面的代碼,

if (in_array('Acute critical care', $interest_array)) { 
    echo "selected_once"; 
} 

if (in_array('Cardiology', $interest_array)) { 
    echo "selected_twice"; 
} 

我只能得到一個selected once輸出,但我期待的selected once兩次輸出。

這是爲什麼。我看到很多人都遇到過in_array類似的問題,但是我找到的解決方案都沒有(大多數問題稍有不同,我嘗試翻轉陣列並使用array_key_exists,但沒有運氣,我也嘗試使用preg_replace刪除。字符串中的空白沒有運氣有人可以解釋是什麼問題

回答

4

如果你仔細看的var_dump()輸出,你可以看到字符串Cardiology在開頭空格:

string(11) " Cardiology" 
      ^

這會導致in_array()未將其檢測爲匹配值。要刪除該空間,您可以應用做好in_array()檢查之前使用array_map()所有的數組元素Ÿtrim

$interest_array = explode(',', $user->interests); 
$interest_array = array_map('trim', $interest_array); 
+0

@GhostRider:很高興我能有所幫助。乾杯! –