查找多维树状数组中键的路径

发布于 2024-10-06 11:49:15 字数 366 浏览 3 评论 0原文

嘿,我有这个数组(实际数组可以有几层深度并跨越树结构)

array
  3 => 
    array
      4 => 
        array
          7 => null
          8 => null
      5 => null
  6 => null

现在,例如我想要键 7 的路径,它可以这样显示:

array
  0 => int 7
  1 => int 4
  2 => int 3

有人可以帮我实现这样的递归函数吗?

hey, I have this array (the actual array can be several level deeps and spans a tree-structure)

array
  3 => 
    array
      4 => 
        array
          7 => null
          8 => null
      5 => null
  6 => null

Now, e.g. I want the path to key 7, it can be shown like this:

array
  0 => int 7
  1 => int 4
  2 => int 3

Can someone help me with such a recursion function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弥繁 2024-10-13 11:49:15

这将返回您正在寻找的内容。如果没有找到该键,它将返回 null。

在键盘中。

function getkeypath($arr, $lookup)
{
    if (array_key_exists($lookup, $arr))
    {
        return array($lookup);
    }
    else
    {
        foreach ($arr as $key => $subarr)
        {
            if (is_array($subarr))
            {
                $ret = getkeypath($subarr, $lookup);

                if ($ret)
                {
                    $ret[] = $key;
                    return $ret;
                }
            }
        }
    }

    return null;
}

This will return you what you are looking for. It will return null if the key is not found.

In codepad.

function getkeypath($arr, $lookup)
{
    if (array_key_exists($lookup, $arr))
    {
        return array($lookup);
    }
    else
    {
        foreach ($arr as $key => $subarr)
        {
            if (is_array($subarr))
            {
                $ret = getkeypath($subarr, $lookup);

                if ($ret)
                {
                    $ret[] = $key;
                    return $ret;
                }
            }
        }
    }

    return null;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文