ホームページ >バックエンド開発 >PHPチュートリアル >ph の 2 次元配列のソート問題、助けてください、詳細な要件が含まれています

ph の 2 次元配列のソート問題、助けてください、詳細な要件が含まれています

WBOY
WBOYオリジナル
2016-06-23 13:32:18881ブラウズ

2次元配列の初期状態はこんな感じです

$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'),)

デフォルトでは名前フィールドでソートされていますが、変更する必要があります
まだ名前フィールドでソートされていますが、それもソートする必要があります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        ))

この状況は少し理想化されていますが、現実は正しくありません、ありがとうございます

つまり、でも、無から何かを生み出すことはできません
実際、あなたの質問はこれとは関係ありません 並べ替えでは解決できません
ハイライト領域には多くの投稿があるため、注意深く読む必要があります

並べ替えで隣接リストのクエリの問題を解決できるなら、多くの人がまだそうしていますそれを勉強する必要がありますか?

つまり、しかし、無から有を生み出すことはできません
実際、あなたの問題は並べ替えによって解決することはできません
ハイライトエリアには多くの投稿があるので、注意深く読む必要があります

並べ替えでクエリを解決できる場合隣接リストの問題では、まだそれほど多くの人が彼を研究する必要があるのでしょうか?


調査したところ、再帰を使用する必要があることがわかりました、ありがとう
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。