多次元配列のソート問題
には配列があります:
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><?php
$arr = array(array(1,0),array(2,0),array(3,0),array(4,0),array(5,1),array(6,1),array(7,5),array(8,2)); ?>
ログイン後にコピー
望ましいソート結果は次のとおりです:
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><?php
$arr = array(array(1,0),array(5,1),array(7,5),array(6,1),array(2,0),array(8,2),array(3,0),array(4,0)); ?>
ログイン後にコピー
つまり: $arr[$i][0] == $arr[$j][1] そして、$arr[$j] は $arr[$i] の後ろに配置されます
実際には、は無限分類Aのソートで、複数のループで処理してみましたが、再帰を使って実装したかったのですが、$arr[$i][0]=1しか達成できませんでした。助けてください。 🎜> カテゴリは比較的少ないです
-----解決策---------------------- --------
次のように記述します
PHP コード
$arr = 配列(配列(1,0),配列(2,0),配列(3,0),配列(4,0),配列(5,1),配列(6,1),配列(7) ,5),配列(8,2));
print_r(foo($arr));
関数 foo($ar, $p=0) {
$r = 配列();
foreach($ar as $v) {
if($v[1] == $p) {
$r[] = $v;
$r = array_merge($r, foo($ar, $v[0]));
}
}
$r を返します。
<div class="clear"></div>
ログイン後にコピー