1stPHP
多次元配列のソート
ソース
<?php
include "../../d/common.php";
$common = new common;
$common->showHead("多次元配列のソート-".$common->cfg[title],"../../css/main.css","","../../d/count/top.cgi");
$common->showAdd();
$common->smpmenu("多次元配列のソート","./sort.php");
//多次元配列をセット
$data = array(
array(130,10,0,56,67,99,15,37,46,98),
array("black","gray","blue","red","yellow","white","purple","green","silver","pink"),
array("黒","灰","青","赤","黄色","白","紫","緑","銀","桃"),
array("くろ","はい","あお","あか","きいろ","しろ","むらさき","みどり","ぎん","もも"),
array(7,6,6599,345,3,46,648,50,643,57)
);
$sortmord = $_GET["sm"];
$sn = $_GET["sn"];
if (!$sortmord){
$sortmord = "a";
}
if ($sortmord == "a"){
$sortmord = "d";
$sort = SORT_ASC;
}else{
$sortmord = "a";
$sort = SORT_DESC;
}
switch ($sn) {
case 0: array_multisort($data[0],$sort , SORT_REGULAR,$data[1],$data[2],$data[3],$data[4]);
break;
case 1: array_multisort($data[1],$sort , SORT_REGULAR,$data[0],$data[2],$data[3],$data[4]);
break;
case 2: array_multisort($data[2],$sort , SORT_REGULAR,$data[0],$data[1],$data[3],$data[4]);
break;
case 3: array_multisort($data[3],$sort , SORT_REGULAR,$data[0],$data[1],$data[2],$data[4]);
break;
case 4: array_multisort($data[4],$sort , SORT_REGULAR,$data[0],$data[1],$data[2],$data[3]);
break;
}
$th = array("サイズ","color","色","いろ","価格");
print "<table border=1>";
print "<tr>";
foreach ($th as $key=>$value) {
$s = "_";
if ($key == $sn) {
if ($sm == "a"){$s ="▲";}else{$s ="▼";}
}
print "<th><a href=\"{$_SERVER['PHP_SELF']}?sn=$key&sm=$sortmord\">$value$s</a></th>\n";
}
print "</tr>";
for ($i=0;$i<count($data[0]);$i++){
print "<tr><td style=\"text-align=right;\">".$data[0][$i]."</td>";
print "<td>".$data[1][$i]."</td><td>".$data[2][$i]."</td><td>".$data[3][$i]."</td>";
print "<td style=\"text-align=right;\">".$data[4][$i]."</td></tr>\n";
}
print "</table>";
$common->showFoot();
?>