初始狀態的二維數組是這樣的
$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'),
請問怎麼用代碼實現呢?我試了蠻久不怎麼會?
回複討論(解決方案)
$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 ))
這個情況有點理想化了,實際中卻不對,還是謝謝了
那是,但我也不能無中生有
其實你的這個問題跟本就不是排序能解決的
精華區中有很多文章,你應該認真看看
如果排序就能解決鄰接列表的查詢問題,那還需那麼多人去研究他嗎?
那是,但我也不能無中生有
其實你的這個問題跟本就不是排序能解決的
精華區中有很多文章,你應該認真看看
如果排序就能解決鄰接列表的查詢問題,那還需那麼多人去研究他嗎?
我研究出來了,需要使用遞迴來做,還是謝謝了