Heim > Backend-Entwicklung > PHP-Tutorial > ph二维数组排序难题,请求帮助,内附详细需求

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

WBOY
Freigeben: 2016-06-23 13:32:18
Original
875 Leute haben es durchsucht

初始状态的二维数组是这样的

$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'),)
Nach dem Login kopieren

默认按照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'),
Nach dem Login kopieren

请问怎么用代码实现呢?我试了蛮久不怎么会?


回复讨论(解决方案)

$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);
Nach dem Login kopieren
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        ))
Nach dem Login kopieren

这个情况有点理想化了,实际中却不对,还是谢谢了

那是,但我也不能无中生有
其实你的这个问题跟本就不是排序能解决的
精华区中有很多帖子,你应该认真看看

如果排序就能解决邻接列表的查询问题,那还需那么多人去研究他吗?

那是,但我也不能无中生有
其实你的这个问题跟本就不是排序能解决的
精华区中有很多帖子,你应该认真看看

如果排序就能解决邻接列表的查询问题,那还需那么多人去研究他吗?


我研究出来了,需要使用递归来做,还是谢谢了
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage