在这样的数组中搜索最简单的方法是什么?例如,搜索5f8ff7a0c49db9d并返回5f8ff 7bee02fd05
这不起作用:
array_search('5f8ff7a0c49db9d', array_column($arr, 1))
[0] : Array
(
[0] => Array
(
[5f8ff7bedde211e] => 5f8e6a74c1d4efe
)
[1] => Array
(
[5f8ff7bee02fd05] => 5f8ff7a0c49db9d
)
[2] => Array
(
[5f8ff7bee2735ce] => 5f8ff7a0c6e8039
)
)
您可以按如下方式减少整个阵列:
$keyedByValue = array_reduce($arr, static function(array $carry, array $item) {
return array_merge($carry, array_reverse($item));
}, []);
$yourKey = $keyedByValue['5f8ff7a0c49db9d'];
或者你甚至可以使用一个简单的循环:
$result = null;
$search = '5f8ff7a0c49db9d';
foreach ($arr as $item) {
$item = array_reverse($item);
if (isset($item[$search])) {
$result = $item[$search];
break;
}
}
array_search在示例中有这样的内容:
$foundKey = array_search($needle, array_column($array, 'key'));
它工作良好