duanseci1039 2011-08-19 19:37
浏览 80
已采纳

使用PHP获取三维数组中的最高子值

I have the following array:

Array
(
    [medium_priority] => Array
        (
            [0] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 60
                )

        )

    [high_priority] => Array
        (
            [0] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 95
                )

            [1] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 85
                )

            [2] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 80
                )

        )

    [low_priority] => Array
        (
            [0] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 20
                )

            [1] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 30
                )

        )

)

Using PHP, I want to get an array consisting of the five values with the highest weight, like this:

Array
(               
    [0] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 95
        )

    [1] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 85
        )

    [2] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 80
        )               

    [3] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 60
        )

    [4] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 30
        )

)

Of course, this could be accomplished by iterating over the array using a loop to 'flatten' the array and then sort it usort, but I think there should be an easier and faster way. However, I can't figure out what that would be.

I hope you can help me!

  • 写回答

1条回答 默认 最新

  • douyi6290 2011-08-19 19:39
    关注

    Pseudo-code:

    1. Grab array_values from the original data set.
    2. Use array_merge to combine them all (essentially flatten)
    3. Use a usort and pop off first 5 elements
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊