首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:通过键连接嵌套子数组的值

PHP:通过键连接嵌套子数组的值
EN

Stack Overflow用户
提问于 2014-01-14 18:48:34
回答 1查看 156关注 0票数 0

在过去的几天里,我一直对以下问题感到困惑,似乎想不出一个优雅的解决方案。

我有一个类似这样的数组,其中每个子数组都有一个散列符号作为其键的前缀,并且每个(子)数组都有不同的嵌套深度:

代码语言:javascript
复制
Array(
    [#a1] => Array(
            [key1] => a1-1
            [key2] => a1-2
            [#b1] => Array(
                    [key1] => b1-1
                    [key2] => b1-2
                )
            [#b2] => Array(
                    [key1] => b2-1
                    [key2] => b2-2
                    [#c1] => Array(
                            [key1] => c1-1
                            [key2] => c1-2
                        )
                    [#c2] => Array(
                            [key1] => c2-1
                            [key2] => c2-2
                        )
                )
        )
    [#a2] => Array(...)
)

我需要一些方法来遍历每个可能的嵌套路由(例如#a1 - #b2 - #c1,还有#a1 - #b2 - #c2),并在路由期间将相等的键合并到特定于该路由的数组中。结果数组的键并不重要。

如下所示:

代码语言:javascript
复制
Array(

    // Follow path #a1 #b1
    [] = Array(
            [key1] = Array(a1-1, b1-1)
            [key2] = Array(a1-2, b1-2)
        )

    // Follow path #a1 #b2 #c1
    [] = Array(    
            [key1] = Array(a1-1, b2-1, c1-1)
            [key2] = Array(a1-2, b2-2, c1-2)
        )

    // Follow path #a1 #b2 #c2
    [] = Array(    
            [key1] = Array(a1-1, b2-1, c2-1)
            [key2] = Array(a1-2, b2-2, c2-2)
        )

    // Follow path #a2 ...
    [] = Array(...)

    )
)

我一直在想array_merge_recursivearray_walk_recursiverecursive foreaches,但是我不能把它们放在一个实际有效的东西里……

任何帮助都是非常感谢的!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-01-14 18:52:11

尝试使用usort() (http://php.net/manual/en/function.usort.php),例如:

代码语言:javascript
复制
function compare_id($a, $b) {
    if ($a['id'] == $b['id']) return 0;
    return ($a['id'] < $b['id']) ? -1 : 1;
}

$a = [
    ['id' => 3, 'item' => 'pc'],
    ['id' => 1, 'item' => 'mouse'],
    ['id' => 2, 'item' => 'kb'],
];

usort($a, 'compare_id');

var_dump($a);   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21111633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档