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

PHP如何在二维数组中根据子数组name字段值查找主数组对应键名

实现方案

方案1:使用array_column + array_search(推荐,代码最简洁)

array_column可以直接提取二维数组中指定字段的值组成新的一维数组,且默认保留原数组的键名,之后直接用array_search查找对应值的键即可:

function searchKeyByName(array $array, string $searchName) {
    // 提取所有子数组的name字段,保留原数组键
    $nameList = array_column($array, 'name');
    // 严格匹配查找对应键,第三个参数true开启严格类型校验
    return array_search($searchName, $nameList, true);
}

// 调用示例
$targetKey = searchKeyByName($yourArray, 'test3');
// 此时$targetKey的返回值为2

该方法要求PHP版本 >= 5.5。

方案2:循环遍历实现(兼容全版本,支持自定义匹配规则)

如果需要兼容更低版本PHP,或者需要自定义匹配逻辑(比如不区分大小写、模糊匹配),可以用foreach遍历实现:

/**
 * 根据name字段查找二维数组对应键
 * @param array $array 待查询的二维数组
 * @param string $searchName 要查找的name值
 * @param bool $caseSensitive 是否区分大小写,默认是
 * @return int|bool 找到返回对应键,未找到返回false
 */
function searchKeyByName(array $array, string $searchName, bool $caseSensitive = true) {
    foreach ($array as $key => $item) {
        if (!isset($item['name'])) continue;
        if ($caseSensitive) {
            if ($item['name'] === $searchName) return $key;
        } else {
            if (strcasecmp($item['name'], $searchName) === 0) return $key;
        }
    }
    return false;
}

// 调用示例
$targetKey = searchKeyByName($yourArray, 'test3');
// 不区分大小写调用示例
$targetKey = searchKeyByName($yourArray, 'Test3', false);

注意:判断是否查找成功时请用$targetKey !== false的判断方式,避免匹配到键为0的情况时和false混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:54:00