![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
え → お → い → う → あ というのが、規則ですよね?
この規則は、どうやって与えるんですか?
$rule = array('え', 'お', 'い', 'う', 'あ');
でよければ、
function compareWithMyrule($a, $b) {
$rule = array('え', 'お', 'い', 'う', 'あ');
$ruleFlipped = array_flip($rule);
if($ruleFlipped[$a] == $ruleFlipped[$b]) return 0;
return ($ruleFlipped[$a] < $ruleFlipped[$b]) ? -1 : 1;
}
という比較関数を書けば、いいでしょう。
array('え' => 0, 'お' => 1, 'い' => 2, 'う' => 3, 'あ' =>4);
を最初から作ってもかまいませんが、こっちの方が見やすいのでは。
この配列は、関数内で毎回計算するのも無駄ですので、一度外で計算してglobalで使った方が効率はよさそうです。
No.3
- 回答日時:
前の投稿ですが、ユーザが書けるというところを強調したかったんで、システムの関数を使っても、O.K.
<?php
$a = array(7,65,543,4321,3333);
sort($a);
var_dump($a);
usort($a, 'strcmp');
var_dump($a);
?>
誤解されそうなんで。
この回答への補足
ありがとうございます。
そのような関数があったのですね。
でも、私がしたいことは一定の規則に従ってソートするのではなく、
あらかじめ決めておいた順番に並べ替えたいのです。
例えば、
$a = array('あ', 'い', 'う', 'え', 'お');
という配列があって、その順番を自分が決めたように、
え → お → い → う → あ
としたいと言えばいいでしょうか。
No.2
- 回答日時:
並び替えを行うには、順序を判定する必要があります。
都道府県に関しては、yambejp さんの言うように、JISコードをキーに持つというのも手かもしれませんね。JISコードの存在は知れませんでした。これって、県庁の緯度順ですか?一般的には、ユーザが順序を判定する関数を書いて、それを使ってソートをします。そのための関数がusortです。
たとえば、整数の配列を文字列としてソートしたいとします。この時、そのまま比較すると、数値としての順になります。文字列として比較したい時には次のようにします。
<?php
function compareAsString($x, $y) {
if($x == $y) {
return 0;
}
return ('a' . $x < 'a' . $y) ? -1 : 1;
}
$a = array(7,65,543,4321,3333);
sort($a);
var_dump($a);
usort($a, 'compareAsString');
var_dump($a);
?>
compareByString()が大小比較を行うユーザー定義関数です。第1引数が第2引数より小さければ-1、等しければ0、大きければ1を返すように書きます。
PHPに限らず、類似の関数は他の言語にも結構あります。
No.1
- 回答日時:
都道府県にはJIS番号が付いています。
なのでキーにあらかじめJIS番号を振っておけばksortでいけます。
<?
$prefecture = array(
26=> '京都府'
, 28=>'兵庫県'
, 1=>'北海道'
, 11=>'埼玉県'
, 27=>'大阪府'
, 3=>'岩手県'
, 34=>'広島県'
, 22=>'愛知県'
, 16=>'新潟県'
, 13=>'東京都'
, 14=>'神奈川県'
);
print_r($prefecture );
ksort($prefecture );
print_r($prefecture );
?>
この回答への補足
ありがとうございます。
説明が悪くてすいません。
都道府県を用いた場合は例えばの話だったので、実際は違う文字列をソートしたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 転職 長く続けられる好条件の求人でしょうか? 3 2023/07/12 18:45
- メディア・マスコミ 日本はなんで? 右寄り左寄りの地方紙があるんですか? 12 2023/06/21 07:59
- その他(宿泊・観光) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡市福岡市 3 2023/01/29 18:14
- その他(宿泊・観光) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡県福岡市 3 2023/02/12 10:22
- その他(国内) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡県福岡市 2 2023/01/27 22:00
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- その他(国内) 1番2番3番…と争う? 2 2022/12/06 19:52
- 郵便・宅配 北海道版の日刊スポーツとスポーツ報知を購入しましたが1週間以上たっても届きません。 1 2023/02/28 21:34
- 転職 下記のような募集は、良い会社でしょうか?どう思いますか?入ってみたら良くない事が無いでしょうか? 4 2023/03/03 16:40
- その他(国内) 3時!夜中なのか早朝なのか微妙な時間、5時に出るならシャワー浴びてお茶淹れて神棚、仏壇 2 2022/05/20 03:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
行列
-
mallocで char *型の配列を確...
-
特定の文からメールアドレスの...
-
php で1から100までの素数の表...
-
PHPのセレクトボックスの初期値...
-
file_existsでファイル名の部分...
-
PHPからCSVをアップロード後、m...
-
プルダウンメニューにDBの内容...
-
配列をループでたくさん宣言し...
-
【Smarty】foreach関数やsectio...
-
配列をファイルに書き込む方法
-
PHPにてクラスを配列にすること...
-
$_SESSIONに二次元配列を使える...
-
Resource id #3 と表示されま...
-
array_combineがうまくいかない...
-
別ファイルの構造体の値を読み...
-
foreachのなかで次のキーを参照...
-
PHPのカッコ[ ]の使い方について
-
PHP SimpleXml unsetについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
C言語の配列をPush(追加)する...
-
php で1から100までの素数の表...
-
STLのvectorで作った配列をメン...
-
スカラーのベクトル微分
-
行列
-
Perlで重複行を削除したい
-
配列の要素(value)に、変数を...
-
特定の文からメールアドレスの...
-
forとかで連番の変数を一気に格...
-
C言語 最大値と最小値を求めて...
-
CArrayの要素としてCStringArra...
-
PHPでユニークIDを作る
-
fgetc関数について
-
読み(あ行~わ行)ごとに分け...
-
Pager::factory()の使い方がわ...
-
verilogで、配列の一部をタスク...
-
mallocで char *型の配列を確...
-
c言語 単位行列
-
連想配列で値が空だったら、要...
おすすめ情報