配列の並べ替えで比較キーを任意順で並べ替えたい場合の参考に。。。
この例では配列の ‘kind’ という値を 3 < 4 < 1 < 2 という順番で並べ替えます。
<?php // 配列 $operators = array (); $operators[] = array('name' => 'foo1', 'kind' => '1'); $operators[] = array('name' => 'foo2', 'kind' => '2'); $operators[] = array('name' => 'foo3', 'kind' => '3'); $operators[] = array('name' => 'foo4', 'kind' => '4'); $operators[] = array('name' => 'foo5', 'kind' => '3'); $operators[] = array('name' => 'foo6', 'kind' => '3'); $operators[] = array('name' => 'foo7', 'kind' => '2'); $operators[] = array('name' => 'foo8', 'kind' => '4'); $operators[] = array('name' => 'foo9', 'kind' => '1'); // 並べ替え(kind が 3,4,1,2) の順 usort($operators, function($a, $b) { if ($a['kind'] == 3) { if ($b['kind'] == 3) { return 0; } return -1; } else if ($a['kind'] == 4) { if ($b['kind'] == 4) { return 0; } else if ($b['kind'] == 3) { return 1; } return -1; } else if ($a['kind'] == 1) { if ($b['kind'] == 1) { return 0; } else if ($b['kind'] == 2) { return -1; } return 1; } else if ($a['kind'] == 2) { if ($b['kind'] == 2) { return 0; } return 1; } return 0; }); // ソート結果 foreach($operators as $ope) { echo 'Name: '.$ope['name'].' (Kind: '.$ope['kind'].')'.PHP_EOL; } ?>
実行結果:
Name: foo6 (Kind: 3) Name: foo3 (Kind: 3) Name: foo5 (Kind: 3) Name: foo4 (Kind: 4) Name: foo8 (Kind: 4) Name: foo9 (Kind: 1) Name: foo1 (Kind: 1) Name: foo2 (Kind: 2) Name: foo7 (Kind: 2)