• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

【解题】PHP多维数组排序问题

php 搞代码 4年前 (2022-01-23) 14次浏览 已收录 0个评论
文章目录[隐藏]

最近在碰PHP,刚好遇到一个问题,涉及到多维数组排序问题。该系列数组都有个关键key PID,要求按照PID将数组重新排列一遍。仅仅排序第一层array即可。使用了array_multisort(),但出现报错。如下:

Array(    [0] => Array        (            [pid] => 0            [title] => 首页            [path] => index            [current] => 0            [link] => /index.php        )    [1] => Array        (            [tid] => 3            [pid] => 8            [mid] => 8            [topid] => 0            [upid] => 0            [exmid] => 0            [linkid] => 2            [gotoid] => 17            [lng] => cn            [larray] => Array                (                    [0] => Array                        (                            [tid] => 17                            [pid] => 50                            [mid] => 8                            [topid] => 3                            [upid] => 3                        )                    [1] => Array                        (      <b style="color:transparent">(、本文来源gao@!dai!ma.com搞$$代^@码网*</b><i>搞gaodaima代码</i>                      [tid] => 18                            [pid] => 50                            [mid] => 8                            [topid] => 3                            [upid] => 3                        )                    [2] => Array                        (                            [tid] => 19                            [pid] => 50                            [mid] => 8                            [topid] => 3                            [upid] => 3                        )                )        )    [2] => Array        (            [tid] => 5            [pid] => 2            [mid] => 3            [topid] => 0            [upid] => 0            [exmid] => 0            [larray] => Array                (                    [0] => Array                        (                            [tid] => 11                            [pid] => 50                            [mid] => 3                            [topid] => 5                            [upid] => 5                        )                    [1] => Array                        (                            [tid] => 12                            [pid] => 50                            [mid] => 3                            [topid] => 5                            [upid] => 5                        )                    [2] => Array                        (                            [tid] => 22                            [pid] => 50                            [mid] => 8                            [topid] => 5                            [upid] => 5                        )                )        )    [3] => Array        (            [tid] => 50            [pid] => 4            [mid] => 8            [topid] => 0            [upid] => 0            [larray] =>         )   )

最终结果如下:按照PID从小到大重新排列了一次。

Array(    [0] => Array        (            [pid] => 0            [title] => 首页            [path] => index            [current] => 0            [link] => /index.php        )    [1] => Array	        (            [tid] => 5            [pid] => 2            [mid] => 3            [topid] => 0            [upid] => 0            [exmid] => 0            [larray] => Array                (                    [0] => Array                        (                            [tid] => 11                            [pid] => 50                            [mid] => 3                            [topid] => 5                            [upid] => 5                        )                    [1] => Array                        (                            [tid] => 12                            [pid] => 50                            [mid] => 3                            [topid] => 5                            [upid] => 5                        )                    [2] => Array                        (                            [tid] => 22                            [pid] => 50                            [mid] => 8                            [topid] => 5                            [upid] => 5                        )                )        )    [2] => Array        (            [tid] => 50            [pid] => 4            [mid] => 8            [topid] => 0            [upid] => 0            [larray] =>         )    [3] => Array        (            [tid] => 3            [pid] => 8            [mid] => 8            [topid] => 0            [upid] => 0            [exmid] => 0            [linkid] => 2            [gotoid] => 17            [lng] => cn            [larray] => Array                (                    [0] => Array                        (                            [tid] => 17                            [pid] => 50                            [mid] => 8                            [topid] => 3                            [upid] => 3                        )                    [1] => Array                        (                            [tid] => 18                            [pid] => 50                            [mid] => 8                            [topid] => 3                            [upid] => 3                        )                    [2] => Array                        (                            [tid] => 19                            [pid] => 50                            [mid] => 8                            [topid] => 3                            [upid] => 3                        )                )        )   )

回复讨论(解决方案)

建议贴出 var_export();后的数组以便测试

等高手,我只会选择排序

设原数组为 $ar,则有

array_multisort(array_map(function($item){ return $item['pid']; }, $ar), $ar);

建议贴出 var_export();后的数组以便测试
这个就是 print_r 打印出来的

建议贴出 var_export();后的数组以便测试


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【解题】PHP多维数组排序问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址