$array = array(
array("address" =>"eeee@dddd.ddd","name" => "あいう"),
array("name" => "はざま","address" => "cccc@dddd.ddd"),
array("name" => "かきく","address" => "tttt@ccc.eee"),
array("name" => "さく","address" => "bbbb@dddd.ddd"),
array("name" => "あか","address" => "aaaa@dddd.ddd")
);
上記のような多次元配列があった場合
sort($array);
とすると
以下のようなデフォルトの配置が
Array
(
[0] => Array
(
[address] => eeee@dddd.ddd
[name] => あいう
)
[1] => Array
(
[name] => はざま
[address] => cccc@dddd.ddd
)
[2] => Array
(
[name] => かきく
[address] => tttt@ccc.eee
)
[3] => Array
(
[name] => さく
[address] => bbbb@dddd.ddd
)
[4] => Array
(
[name] => あか
[address] => aaaa@dddd.ddd
)
)
上記の並びが
Array
(
[0] => Array
(
[address] => eeee@dddd.ddd
[name] => あいう
)
[1] => Array
(
[name] => あか
[address] => aaaa@dddd.ddd
)
[2] => Array
(
[name] => かきく
[address] => tttt@ccc.eee
)
[3] => Array
(
[name] => さく
[address] => bbbb@dddd.ddd
)
[4] => Array
(
[name] => はざま
[address] => cccc@dddd.ddd
)
)
nameキーの値をもとにあいうえお順にならびかえられます。
がこれをnameキーではなく addressキーで並び替えたいと思ったとき、
usort($array , function($a,$b){
if($a["address"]< $b["address"]){
return -1;
}else{
return 1;
}
}
);
と上記のようのおこなうと
Array
(
[0] => Array
(
[name] => あか
[address] => aaaa@dddd.ddd
)
[1] => Array
(
[name] => さく
[address] => bbbb@dddd.ddd
)
[2] => Array
(
[name] => はざま
[address] => cccc@dddd.ddd
)
[3] => Array
(
[address] => eeee@dddd.ddd
[name] => あいう
)
[4] => Array
(
[name] => かきく
[address] => tttt@ccc.eee
)
)
とうまくaddressキーでabcdの順にソートできています。
次に
usort($array , function($a,$b){
return strcmp($a["address"],$b["address"])? -1:1;
}
);
と上記のようにstrcmp関数を使うと
Array
(
[0] => Array
(
[name] => あか
[address] => aaaa@dddd.ddd
)
[1] => Array
(
[name] => さく
[address] => bbbb@dddd.ddd
)
[2] => Array
(
[name] => かきく
[address] => tttt@ccc.eee
)
[3] => Array
(
[name] => はざま
[address] => cccc@dddd.ddd
)
[4] => Array
(
[address] => eeee@dddd.ddd
[name] => あいう
)
)
うまくソートできませんでした。
この、直接 $a, $bの大小を条件とした場合と
strcmp — バイナリセーフな文字列比較をおこなうstrcmp
とは、どのような処理の違いがあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) パイソン初心者です 4 2022/06/29 06:49
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- 英語 海外から返金 1 2022/06/30 08:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- マナー・文例 こういうタイプの封筒で手紙を出したいのですが、 ADDRESS に相手先の住所を書く NAME に相 1 2023/01/13 22:13
- 営業・販売・サービス 仕入れの方法 1 2023/05/21 18:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインタ配列をfscanfで読み込...
-
複数条件での検索について教え...
-
PHPからHTMLへの変数の受け...
-
VBA で、スペースを含むファイ...
-
Smartyを利用したファイルアッ...
-
WordのIDataObject::GetData呼...
-
phpで変数を使ってcopyできない
-
openCVのトラックバーについて
-
UPDATEできない
-
POSTの項目に追加
-
重複を防ぐ記述について教えて...
-
Flaskでサーバー立ち上げに関して
-
検索結果の出力先を違うフレー...
-
csvファイルチェック
-
laravelを利用してコントロール...
-
phpでのセレクトボックスの値を...
-
検索時の選択内容を保持する方法
-
PHPでURLにジャンプするには?
-
PHP ボタンが押されたら処理を...
-
phpで分からないエラーが出てし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flaskでサーバー立ち上げに関して
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
phpで変数を使ってcopyできない
-
PHPで入力フォームでデータを確...
-
PHPからHTMLへの変数の受け...
-
POSTの項目に追加
-
PHP MySql 画像を取得
-
MySQL,PHPのリロードによる二重...
-
UPDATEできない
-
ファイル名を変更してアップロ...
-
php、sqlite3にデーター追加で...
-
openCVのトラックバーについて
-
複数条件での検索について教え...
-
PHP5でsimple_xml_load_fileす...
-
PHPのリロード時の処理
-
連想配列を複数条件で比較して...
-
PDOのprepareでLIKEの部分一致...
-
POSTされない
-
アップロードしたファイルの絶...
おすすめ情報