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

PHP中如何通过嵌套子数组元素查找并返回父数组?

根据嵌套数组子元素值获取父级数组

假设我们有如下多维数组:

$array = [
    [
        'name' => 'john',
        'age' => 25,
        'children' => [
            'jane',
            'jeff',
        ],
    ],
    // 更多数组元素...
];

已知可以通过以下方式查找顶层字段对应的父数组索引:

array_search('john', array_column($array, 'name')); // 返回0

现在需要实现:通过子数组children中的元素(比如jeff),找到对应的完整父级子数组。


解决方案

基础实现(仅一级嵌套)

遍历数组,检查每个元素的children子数组是否包含目标值,找到后返回该父数组:

function findParentByChild($array, $childName) {
    foreach ($array as $item) {
        if (isset($item['children']) && is_array($item['children']) && in_array($childName, $item['children'])) {
            return $item;
        }
    }
    return null; // 未找到返回null
}

// 使用示例
$parent = findParentByChild($array, 'jeff');
print_r($parent);

输出结果:

Array
(
    [name] => john
    [age] => 25
    [children] => Array
        (
            [0] => jane
            [1] => jeff
        )
)

如果需要返回父数组的索引而非数组本身,可修改函数:

function findParentIndexByChild($array, $childName) {
    foreach ($array as $index => $item) {
        if (isset($item['children']) && is_array($item['children']) && in_array($childName, $item['children'])) {
            return $index;
        }
    }
    return false; // 未找到返回false
}

// 使用示例
$parentIndex = findParentIndexByChild($array, 'jeff'); // 返回0

递归实现(支持深层嵌套)

如果数组存在多层嵌套(比如children里还有子数组),可以用递归函数遍历:

function findParentByChildRecursive($array, $childName) {
    foreach ($array as $item) {
        // 检查当前项的children是否包含目标值
        if (isset($item['children']) && is_array($item['children'])) {
            if (in_array($childName, $item['children'])) {
                return $item;
            }
            // 递归查找深层嵌套
            $result = findParentByChildRecursive($item['children'], $childName);
            if ($result !== null) {
                return $result;
            }
        }
    }
    return null;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:50:21