PHP中in_array函數可以用于查找一個特定的值是否存在于數組中,如果存在則返回TRUE,否則返回FALSE。這個函數應用范圍非常廣泛,常見的場景比如判斷一個元素是否存在于一個選項列表中,或者過濾掉數組中一些不必要的元素。
下面是一個基于in_array函數進行數組判斷的例子:
$fruits = array("apple", "banana", "orange"); if (in_array("apple", $fruits)) { echo "找到了蘋果!"; } else { echo "沒找到蘋果 :("; }
上述代碼會輸出“找到了蘋果!”這個字符串,因為“apple”這個元素確實存在于$fruits數組中。
在實際應用中,我們有時候需要對數組中的所有元素進行遍歷,判斷是否滿足某種條件,這個時候in_array函數可以幫我們實現這個功能。比如下面這個例子,我們要過濾掉數組中所有小于10的數字:
$numbers = array(5, 11, 3, 9, 15, 6); $output = array(); foreach ($numbers as $number) { if (!in_array($number, $output) && $number >= 10) { $output[] = $number; } } print_r($output);
上述代碼會輸出一個只包含11和15的新數組。
除了判斷普通的數組,in_array函數還可以用于操作關聯數組。比如我們有一個學生名單,每個學生的名字和年齡都保存在一個關聯數組中。我們要查找所有年齡在20歲以上的學生。
$students = array( array('name' =>'小明', 'age' =>18), array('name' =>'小紅', 'age' =>25), array('name' =>'小剛', 'age' =>21), array('name' =>'小王', 'age' =>29), ); $over_twenty = array(); foreach ($students as $student) { if (!in_array($student, $over_twenty) && $student['age'] >= 20) { $over_twenty[] = $student; } } print_r($over_twenty);
上述代碼會輸出一個新的關聯數組,其中包含了所有年齡在20歲以上的學生的信息。
最后,需要注意的是,在默認情況下,in_array函數在判斷元素是否存在于數組中時,是對元素進行松散比較的。也就是說,如果一個元素的值的數據類型不同于數組元素的數據類型,但它們之間存在某種類型轉換關系,那么這個元素仍然會被判斷為存在于數組中。比如:
$values = array("1", 2, 3, array('a', 'b')); if (in_array(1, $values)) { echo "找到了1!"; } else { echo "沒找到1 :("; }
上述代碼會輸出“找到了1!”這個字符串,因為整型1和字符串型"1"之間存在類型轉換關系。