你可以做到这一点作为一个衬垫,但它不是很好,很难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()正是我一直在寻找的。 –