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ランキング
-
スカラーのベクトル微分
-
forとかで連番の変数を一気に格...
-
多次元配列をソートする綺麗な...
-
配列の要素(value)に、変数を...
-
smartyのforeachの使い方
-
foreachのなかで次のキーを参照...
-
PHP 多次元配列変数のデータ受...
-
CSVデータのn番目だけの値を取...
-
$_SESSIONに二次元配列を使える...
-
3つの連想配列を交互に代入し...
-
While文を使って配列の中身を全...
-
CSVデータの行数カウントをした...
-
プルダウンメニューにDBの内容...
-
unset使用時の利点
-
配列の書き方
-
多次元配列の一次元目の最大値...
-
String だと「 ByRef引数の型が...
-
ログファイルが一定行数を超え...
-
multiple属性のPOSTを配列で受...
-
添え字が全て文字列のPHPの多次...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
pythonのnumpyでの繰り返しでの...
-
C言語の配列をPush(追加)する...
-
php キーソート キーが重複した...
-
CArrayのソート
-
【PHP】配列のキー名の修正は可...
-
多次元配列をエンコードする関...
-
PHPは何故値渡しより参照渡しの...
-
cakephpでのトランザクション処...
-
pg_copy_fromの使い方について...
-
array_intersectで空欄を比較し...
-
濁点のソート
-
配列中のあるキー、値を取得し...
おすすめ情報