你可以做到這一點作爲一個襯墊,但它不是很好,很難IMO閱讀:
array_column($array, 'name')[($result = array_search('[email protected]', array_column($array, 'email'))) ?: (is_int($result)? $result : -1)];
同如上但格式化爲可讀性:
array_column($array, 'name')[
(
$result = array_search(
'[email protected]',
array_column($array, 'email')
)
)
?:
(
is_int($result)? $result : -1
)
];
這通過名稱的陣列的-1,如果array_search
收率š假以避免不存在的郵件和[email protected]
兩個歸國a
由於false
被評價爲0
。
這樣,如果電子郵件地址不存在你會得到一個Undefined offset
通知,以便電子郵件實際上變成了名的數組的關鍵。
但一次。不大好。相反,考慮這樣的功能:
function customArraySearch($array, $search_column, $search_value, $result_column) {
$result = array_search($search_value, array_column($array, $search_column));
if($result_key !== false) {
return array_column($array, $result_column)[$result_key]
}
return false;
}
customArraySearch($array, 'email', '[email protected]', 'name'); //a
customArraySearch($array, 'email', '[email protected]', 'name'); //false
使用['array_search()'](http://php.net/manual/en/function.array-search.php)或['array_keys()'] (http://php.net/manual/en/function.array-keys.php),而不是'in_array()'找到匹配的項目的位置(一個或多個)。 – axiac
感謝@axiac,array_search()正是我一直在尋找的。 –