在 PHP 中,in_array() 函數用於檢查一個值是否在數組中。該函數返回 TRUE 如果在 array 中找到了value,否則返回 FALSE。下面就讓我們來詳細了解一下in_array()函數的各種用法。
一、基本用法
$arr = array('apple', 'banana', 'orange'); if (in_array('apple', $arr)) { echo '找到了apple'; } else { echo '未找到apple'; }
以上代碼會輸出「找到了apple」,該代碼的意思是:如果在$arr數組中找到了字元串「apple」,則輸出「找到了apple」;否則輸出「未找到apple」。
在in_array()函數中,第一個參數為需要查找的元素,第二個參數為需要查找的數組。
二、第三個參數strict的用法
$arr = array(1, '2', 3); if (in_array('2', $arr, true)) { echo '找到了2'; } else { echo '未找到2'; }
以上代碼會輸出「未找到2」,也就是說如果我們不指定第三個參數strict,則函數會將元素進行弱類型轉換,而弱類型轉換後的字元串’2’和數字2是等價的,並且php中數字2轉換為true。所以當我們用’2’去查找數組時會返回成功,而不是預期的失敗。
如果指定第三個參數為true,則表示in_array()函數不僅會檢查元素值是否相互匹配,同時也會檢查它們數據類型是否匹配。
三、在關聯數組中搜索
$arr = array('apple' => '蘋果', 'banana' => '香蕉', 'orange' => '橙子'); if (in_array('蘋果', $arr, true)) { echo '找到了蘋果'; } else { echo '未找到蘋果'; }
以上代碼會輸出「找到了蘋果」,由於關聯數組是一種指定鍵名對應值的數組,所以在使用in_array()來查找數組中的值時,需指定其匹配的值,而不是鍵名。
四、多維數組的搜索
$arr = array( array('id' => 1, 'name' => '小李'), array('id' => 2, 'name' => '小張'), array('id' => 3, 'name' => '小王') ); $key = array_search('小張', array_column($arr, 'name')); if ($key !== false) { echo $arr[$key]['id']; // 輸出2 } else { echo '未找到小張'; }
以上代碼是如何在一個多維數組中搜索和訪問關鍵元素的例子。由於in_array()函數無法直接搜索多維數組,所以我們需要使用array_column()函數獲取多維數組中指定鍵名的列數據,並結合array_search()函數使用。其中array_search()函數用於返回指定值在列數組中匹配的鍵名,需要注意的是,該函數返回值為false或0時,需要使用!==來比較,以避免類型轉換帶來的誤解。
總結
如上所述,in_array()函數是檢查一個值是否在數組中的最常用函數之一。就其本身而言,該函數簡單易用,而且由於它的普及,您應該能在大多數PHP項目中使用它。在應用中,您可能會遇到各種版本的in_array()函數,例如考慮元素的鍵名,檢查數據類型嚴格性等等。因此,熟練運用in_array()函數,對程序員來說是一個非常重要的技能。
原創文章,作者:YQAWH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317134.html