首頁 > 後端開發 > php教程 > 【解题】PHP多维数组排序问题

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

WBOY
發布: 2016-06-23 14:17:42
原創
957 人瀏覽過

最近在碰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                        (                            [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();后的数组以便测试 

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板