>백엔드 개발 >PHP 튜토리얼 >【解题】PHP多维数组排序问题

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

WBOY
WBOY원래의
2016-06-23 14:17:42961검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.