php递归解析数组-查找值

发布于 2024-11-04 18:15:33 字数 695 浏览 0 评论 0原文

我有一个 nxn 数组,我试图根据以下内容递归地获取特定值:

我想搜索特定值(针),在本例中为 'KEYVAL_TO_FIND' 如果找到的话,然后,由于数组的该部分始终具有相同的结构,因此我想获取'MY_VALUE'

我怎样才能做到这一点?谢谢

数组的示例(忽略键):

[0] = Array
    (
        [0] = Array
            (
                [0] = Array
                        [0] = KEYVAL_TO_FIND
                        [1] = Array
                            (
                                [0] = CONST
                                [1] = MY_VALUE
                            )
                    )
        [1] = VAL
        [2] = Array
                (
                   [0] = FOO
                   [1] = BAR BAZ
                )
    )

I have an nxn array, which recursively I'm trying to get certain value based on the following:

I would like to search for specific value (needle), in this case 'KEYVAL_TO_FIND' if it is found, then, since that part of the array will always have the same structure, I would like to get 'MY_VALUE'.

How could I achieve this? Thanks

An example of how the array look like (ignore the keys):

[0] = Array
    (
        [0] = Array
            (
                [0] = Array
                        [0] = KEYVAL_TO_FIND
                        [1] = Array
                            (
                                [0] = CONST
                                [1] = MY_VALUE
                            )
                    )
        [1] = VAL
        [2] = Array
                (
                   [0] = FOO
                   [1] = BAR BAZ
                )
    )

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

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

发布评论

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

评论(1

屌丝范 2024-11-11 18:15:33

我使用的一个功能...

function array_searchRecursive( $needle, $haystack, $strict=false, $path=array() )
{
    if( !is_array($haystack) ) {
        return false;
    }
    foreach( $haystack as $key => $val ) {
        if( is_array($val) && $subPath = array_searchRecursive($needle, $val, $strict, $path) ) {
            $path = array_merge($path, array($key), $subPath);
            return $path;
        } elseif( (!$strict && $val == $needle) || ($strict && $val === $needle) ) {
            $path[] = $key;
            return $path;
        }
    }
    return false;
}

我希望你喜欢它并使用它:D
祝你今天过得愉快!!

a function I use...

function array_searchRecursive( $needle, $haystack, $strict=false, $path=array() )
{
    if( !is_array($haystack) ) {
        return false;
    }
    foreach( $haystack as $key => $val ) {
        if( is_array($val) && $subPath = array_searchRecursive($needle, $val, $strict, $path) ) {
            $path = array_merge($path, array($key), $subPath);
            return $path;
        } elseif( (!$strict && $val == $needle) || ($strict && $val === $needle) ) {
            $path[] = $key;
            return $path;
        }
    }
    return false;
}

I hope you like it and use it :D
have a nice day!!

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