You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从嵌套关联数组中获取符合条件的父数组键(非索引)

如何通过子数组的值获取父数组的键名?

我的数组如下:

$array = [
    'key1' => [
        'first' => 'azerty',
        'second' => 'qwerty'
    ],
    'key2' => [
        'first' => 'hello',
        'second' => 'world'
    ]
];

我希望通过值qwerty获取对应的父数组键key1。我尝试了这段代码:

$theKeyIWant = array_search('qwerty', array_column($array, 'second'));

但得到的结果是0而非key1,请问怎么修改代码或者有没有其他方法拿到目标键值?


方法一:保留原键名的array_column用法

array_column默认会丢弃原数组的键名,给它传入第三个参数指定保留原键名,就能让array_search返回对应的父键:

$theKeyIWant = array_search('qwerty', array_column($array, 'second', 'key'));

这里第三个参数'key'表示把原数组的键名作为新数组的键,新数组的值是每个子数组的second字段,搜索后直接返回原父键key1。

方法二:遍历数组查找

逻辑直观,适合需要额外判断条件的场景:

$targetValue = 'qwerty';
$theKeyIWant = null;
foreach ($array as $key => $item) {
    if ($item['second'] === $targetValue) {
        $theKeyIWant = $key;
        break; // 找到后立即退出循环提升效率
    }
}

方法三:array_filter配合array_keys

先过滤出符合条件的子数组,再提取对应的键名:

$filtered = array_filter($array, function($item) {
    return $item['second'] === 'qwerty';
});
$theKeyIWant = array_keys($filtered)[0] ?? null;

如果存在多个匹配值,array_keys会返回所有对应父键,这里取第一个匹配结果,?? null用于处理无匹配的情况。


内容的提问来源于stack exchange,提问作者Kozame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:25:20