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();
?>