ph二维数组排序难题,请求帮助,内附详细需求

狄默默斯基 2015-06-19 10:49:27
初始状态的二维数组是这样的
$a = array(
array('name'=>'a','num'=>'1','parentNum'=>'0'),
array('name'=>'b','num'=>'2','parentNum'=>'0'),
array('name'=>'c','num'=>'3','parentNum'=>'0'),
array('name'=>'d','num'=>'4','parentNum'=>'1'),
array('name'=>'e','num'=>'5','parentNum'=>'2'),
array('name'=>'f','num'=>'6','parentNum'=>'0'),
array('name'=>'g','num'=>'7','parentNum'=>'0'),
)

默认按照name字段排序,但是现在需要改变
仍然按照name字段排序,但是同时也要按照parentNum字段排序,parentNum是代表它的父级分类,所以最终的结果应该是
  array('name'=>'a','num'=>'1','parentNum'=>'0'),
array('name'=>'d','num'=>'4','parentNum'=>'1'),
array('name'=>'b','num'=>'2','parentNum'=>'0'),
array('name'=>'e','num'=>'5','parentNum'=>'2'),
array('name'=>'c','num'=>'3','parentNum'=>'0'),
array('name'=>'f','num'=>'6','parentNum'=>'0'),
array('name'=>'g','num'=>'7','parentNum'=>'0'),

请问怎么用代码实现呢?我试了蛮久不怎么会?
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-06-19
  • 打赏
  • 举报
回复
那是,但我也不能无中生有 其实你的这个问题跟本就不是排序能解决的 精华区中有很多帖子,你应该认真看看 如果排序就能解决邻接列表的查询问题,那还需那么多人去研究他吗?
狄默默斯基 2015-06-19
  • 打赏
  • 举报
回复
这个情况有点理想化了,实际中却不对,还是谢谢了
xuzuning 2015-06-19
  • 打赏
  • 举报
回复
$a = array(
  array('name'=>'a','num'=>'1','parentNum'=>'0'),
  array('name'=>'b','num'=>'2','parentNum'=>'0'),
  array('name'=>'c','num'=>'3','parentNum'=>'0'),
  array('name'=>'d','num'=>'4','parentNum'=>'1'),
  array('name'=>'e','num'=>'5','parentNum'=>'2'),
  array('name'=>'f','num'=>'6','parentNum'=>'0'),
  array('name'=>'g','num'=>'7','parentNum'=>'0'),
);

foreach($a as $r) {
  $p[] = $r['parentNum'] ? $r['parentNum'] : $r['num'];
}
array_multisort($p, $a);
print_r($a);
Array
(
    [0] => Array
        (
            [name] => a
            [num] => 1
            [parentNum] => 0
        )

    [1] => Array
        (
            [name] => d
            [num] => 4
            [parentNum] => 1
        )

    [2] => Array
        (
            [name] => b
            [num] => 2
            [parentNum] => 0
        )

    [3] => Array
        (
            [name] => e
            [num] => 5
            [parentNum] => 2
        )

    [4] => Array
        (
            [name] => c
            [num] => 3
            [parentNum] => 0
        )

    [5] => Array
        (
            [name] => f
            [num] => 6
            [parentNum] => 0
        )

    [6] => Array
        (
            [name] => g
            [num] => 7
            [parentNum] => 0
        )

)

狄默默斯基 2015-06-19
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
那是,但我也不能无中生有 其实你的这个问题跟本就不是排序能解决的 精华区中有很多帖子,你应该认真看看 如果排序就能解决邻接列表的查询问题,那还需那么多人去研究他吗?
我研究出来了,需要使用递归来做,还是谢谢了

21,888

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧