ホームページ  >  記事  >  バックエンド開発  >  詳細な要件を含む ph 2 次元配列ソート問題

詳細な要件を含む ph 2 次元配列ソート問題

WBOY
WBOYオリジナル
2016-06-13 12:22:101014ブラウズ

Ph の 2 次元配列のソート問題、助けてください。詳細な要件が含まれています
2 次元配列の初期状態は次のようになります

$a = array(<br />  array('name'=>'a','num'=>'1','parentNum'=>'0'),<br />  array('name'=>'b','num'=>'2','parentNum'=>'0'),<br />  array('name'=>'c','num'=>'3','parentNum'=>'0'),<br />  array('name'=>'d','num'=>'4','parentNum'=>'1'),<br />  array('name'=>'e','num'=>'5','parentNum'=>'2'),<br />  array('name'=>'f','num'=>'6','parentNum'=>'0'),<br />  array('name'=>'g','num'=>'7','parentNum'=>'0'),<br />)

デフォルトでは名前フィールドでソートされますが、ここで変更する必要があります
に従って、名前フィールドは並べ替えられますが、parentNum フィールドによっても並べ替える必要があるため、最終結果は
  array('name'=>'a','num'=>'1','parentNum'=>'0'),<br />    array('name'=>'d','num'=>'4','parentNum'=>'1'),<br />  array('name'=>'b','num'=>'2','parentNum'=>'0'),<br />   array('name'=>'e','num'=>'5','parentNum'=>'2'),<br />  array('name'=>'c','num'=>'3','parentNum'=>'0'),<br />  array('name'=>'f','num'=>'6','parentNum'=>'0'),<br />  array('name'=>'g','num'=>'7','parentNum'=>'0'),

になります。これをコードに実装するにはどうすればよいでしょうか?長い間試しているのですが、まだわかりませんか?
------解決策のアイデア----------------------
$a = array(<br />  array('name'=>'a','num'=>'1','parentNum'=>'0'),<br />  array('name'=>'b','num'=>'2','parentNum'=>'0'),<br />  array('name'=>'c','num'=>'3','parentNum'=>'0'),<br />  array('name'=>'d','num'=>'4','parentNum'=>'1'),<br />  array('name'=>'e','num'=>'5','parentNum'=>'2'),<br />  array('name'=>'f','num'=>'6','parentNum'=>'0'),<br />  array('name'=>'g','num'=>'7','parentNum'=>'0'),<br />);

foreach($a as $r) {
$p[] = $r['parentNum'] ? $r['parentNum'] : $r['num'];
}
array_multisort($p, $a);
print_r($a);
Array<br />(<br />    [0] => Array<br />        (<br />            [name] => a<br />            [num] => 1<br />            [parentNum] => 0<br />        )<br /><br />    [1] => Array<br />        (<br />            [name] => d<br />            [num] => 4<br />            [parentNum] => 1<br />        )<br /><br />    [2] => Array<br />        (<br />            [name] => b<br />            [num] => 2<br />            [parentNum] => 0<br />        )<br /><br />    [3] => Array<br />        (<br />            [name] => e<br />            [num] => 5<br />            [parentNum] => 2<br />        )<br /><br />    [4] => Array<br />        (<br />            [name] => c<br />            [num] => 3<br />            [parentNum] => 0<br />        )<br /><br />    [5] => Array<br />        (<br />            [name] => f<br />            [num] => 6<br />            [parentNum] => 0<br />        )<br /><br />    [6] => Array<br />        (<br />            [name] => g<br />            [num] => 7<br />            [parentNum] => 0<br />        )<br /><br />)<br /><br />

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