fork(1) download
  1. <?php
  2. // このサイトPHP 5.2.11だから匿名関数使えない
  3. function cmp($a,$b){
  4. return $a["id"] - $b["id"];
  5. }
  6.  
  7. // 2012-01-14T22:58+09:00
  8. //何故かダブルクオートで括ってなかったので修正。動作に違いはない。
  9.  
  10. $names = array(
  11. "安藤",
  12. "井上",
  13. "臼井",
  14. "榎本",
  15. "奥田",
  16. "川上"
  17. );
  18.  
  19. $ids = array(
  20. 56,
  21. 31,
  22. 42,
  23. 77,
  24. 68,
  25. 17
  26. );
  27.  
  28. // 個数が一致するかチェックしてもいい。
  29.  
  30. // APIドキュメントがまともなら5.3.0で(このサイト5.2.11だから無理だが)
  31. // MultipleIteratorでも面白そうかなとも思うんだけどね…
  32. // http://w...content-available-to-author-only...p.net/manual/en/class.multipleiterator.php
  33.  
  34. $data = array();
  35. for($i = 0;$i < count($ids,COUNT_NORMAL);$i++){
  36. // $data[]を好む人も少なくはないかも。
  37. // 俺はPHPの書き方自体が嫌いだが。
  38.  
  39. array_push($data,array("id"=>$ids[$i],"name"=>$names[$i]));
  40. }
  41.  
  42. // array(12 => "田中")よりも
  43. // array(["id"]=>12,["name"]=> "田中")の方が好き。
  44. // それともuasortよりksort的なものの方が好み?
  45.  
  46. // とりあえず並び替え前のデータを実験的に書き出してみる。
  47.  
  48. foreach($data as $temp){
  49. //例によってprintfみたいな書き方の方が好きな人がいるかも。
  50. print($temp["id"] . ":" . $temp["name"] . "\n");
  51. }
  52.  
  53. print("==\n");
  54.  
  55. // 並び替えてみる
  56.  
  57. uasort ( $data , "cmp");
  58.  
  59. // 今は面倒だからコピーしているけど、この辺のチェック用のルーチンは関数にしておくと
  60. // 何度も同じ内容にならなくて楽になるよ。
  61.  
  62. foreach($data as $temp){
  63. //例によってprintfみたいな書き方の方が好きな人がいるかも。
  64. print($temp["id"] . ":" . $temp["name"] . "\n");
  65. }
  66.  
  67. print("==\n");
  68.  
  69.  
  70.  
  71.  
  72. ?>
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
56:安藤
31:井上
42:臼井
77:榎本
68:奥田
17:川上
==
17:川上
31:井上
42:臼井
56:安藤
68:奥田
77:榎本
==