微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-如何递归获取多维数组中所有父元素的ID?

假设我有以下PHP多维数组,该数组旨在通过以下方式递归:

$arr = array(
  array(
    'id' => 1,
    'kids' => array(
      array(
        'id' => 11,
        'kids' => array(
          array(
            'id' => 101,
            'kids' => array(),
          ),
        ),
      ), // please note this is a sample
    ),   // it Could have any number of levels
  ),
);

在ID值为101的情况下,如何确定ID 1和11是多维数组中该元素的父级?

解决方法:

我写了一个可能对您有帮助的函数.

function get_parents($target, $array)
{
    $parents_id = false;
    foreach ($array as $item) {
        if (empty($array)) 
            return;
        if ($item['id'] == $target)
            return array();
        else
            $parents_id = get_parents($target, $item['kids']);
        if (is_array($parents_id))
            array_unshift($parents_id, $item['id']);

    }
    return $parents_id;
}

对于数组中的每个项目,如果为空,则什么也不返回.如果这是您要查找的项目,请返回一个空数组,在其中我们将添加父级的ID,否则请继续查找.此时,如果$parents_id是一个数组,则是因为您已找到目标键,所以将父代ID添加到数组的开头

像这样调用函数:get_parents(‘101’,$arr);

在您的示例中,结果将是:

Array
(
    [0] => 1
    [1] => 11
)

如果找不到目标键,则该函数返回false.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐