忘れる前に覚書。優しい文章を目指します。
ザ・覚書 ザ・覚書
出来るだけ子供にも、わかりやすいように書いて行きたいと思います。

PCバージョンでサイトを表示しています。

【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?
ページを見て下さって、 ありがとうございます。この内容に関する情報があれば下の掲示板にでも書き込み下さい。

PHP array_multisort関数で複数配列を一気にソートする


  スポンサーリンク

☆PHP array_multisort関数で複数配列を一気にソートする
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る

ちょっと使用したての「array_multisort関数」の使い方をメモっておきます。
間違っていたらすみません。

array_multisort関数は、arrayに指定されたグループの何かのキーを指定して
ソートする事も出来るようです。

単純に、配列をソートする時にも使えそうです。

arrayは、
array( 'キー1' => $値,'キー2' => $値,・・・
といった感じにグループ化できます。

なので、例として
番号、名前、年齢というデータを

$dataSet[0] = array( 'bangou' => "123" , 'namae' => "なんとか太郎",'nennrei' => "20" );
$dataSet[1] = array( 'bangou' => "789" , 'namae' => "なんとか次郎",'nennrei' => "18" );
$dataSet[2] = array( 'bangou' => "456" , 'namae' => "なんとか五郎",'nennrei' => "40" );
とかいう風に入れておいて

それをキーである番号(bangou)でソートしたり、
キーである名前(namae)でソートしたり、
キーである年齢(nennrei)でソートしたり、
arrayのグループがぐちゃぐちゃにならないように、グループでソートするような事が出来るようです。

上のをarray_multisortで番号で昇順ソートしたとすると、
$dataSet[0]は、array( 'bangou' => "123" , 'namae' => "なんとか太郎",'nennrei' => "20" );
$dataSet[1]は、array( 'bangou' => "456" , 'namae' => "なんとか五郎",'nennrei' => "40" );
$dataSet[2]は、array( 'bangou' => "789" , 'namae' => "なんとか次郎",'nennrei' => "18" );

こんな感じでソートしたり出来るようです。

そのやり方の例です。


$countには、元となるデータの数(100件なら、3つ項目があるから300件というわけではなく100件)が入っているとします。
$bangouの配列には、番号
$namaeの配列には、名前
$nennreiの配列には、年齢
のデータがそれぞれ入っているとします。

それぞれの配列に入れるのは簡単でしょうから、
これはCSVを読みだしたりしても作ることも出来ますよね。



//ここでグループ毎に$dataSetに代入していく。
for( $i=0; $i<$count; $i++ )
{
     $dataSet[$i] = array( 'bangou'=>$bangou[$i] ,'namae'=>$namae[$i], 'nennrei'=>$nennrei[$i] );
}

//array_multisort($bangou, SORT_ASC, $dataSet);//昇順
array_multisort($bangou, SORT_DESC, $dataSet);//降順



ここでのarray_multisortの
第1引数は、番号でソートしてみた為、キー値のbangouにしました。
第2引数は、キー値のデータの並べ方で「SORT_DESC」は降順。「SORT_ASC」は昇順です。
第3引数は、ソート対象の多重配列になります。

$dataSetを、キー値のbangouの降順で並べ代えるという事になります。

この処理の結果、$dataSetは並び変わっているはずです。


array_multisortは、引数の付け方(場所)が場合によって変わるので注意が必要です。

こんな事をして、もっと複雑にソートも出来るようです。

array_multisort($bangou, SORT_DESC, $namae, SORT_ASC, $dataSet);


しかし、私が試した所、時々ソートを失敗したりしたので(プログラムミスがあるのかも)、
先頭データでソートするなら、
rsort($dataSet);
した方が良いのかも?
(同じデータ条件で$dataSetを処理した場合、
 array_multisortでは失敗(ソートしないか時々ソートしない。)
 rsortでは成功したんですよね・・・。)


記述:2013年06月頃

(一言掲示板は、下の方にあります。)

Twitter Facebook Google+ はてな Pocket LINE


  スポンサーリンク


Amazonで『プログラミング PHP』を検索
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ

プログラミングPHP 第3版

初めてのPHP

詳細! PHP 7+MySQL 入門ノート

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

~短期集中講座~ 土日でわかる PHPプログラミング教室 (Informatics&IDEA)

実践!PHPプログラミング: PHPでスマホにも対応した問い合わせフォームを作る
amazonで検索
商品更新日時:
2017/03/23 01:52:20

いちばんやさしいPHPの教本人気講師が教える実践Webプログラミング【電子書籍】[ 柏岡秀男 ]

PHPサーバーサイドプログラミング パーフェクトマスター【電子書籍】[ 金城俊哉 ]

これ1冊でゼロから学べる Webプログラミング超入門 ーHTML,CSS,JavaScript,PHPをまるごとマスター【電子書籍】[ 掌田 津耶乃 ]

〜短期集中講座〜 土日でわかる PHPプログラミング教室環境づくりからWebアプリが動くまでの2日間コース【電子書籍】[ 吉谷 愛 ]

PHPプログラミングの教科書【電子書籍】[ 西沢 直木 ]

イラストでよくわかるPHP はじめてのWebプログラミング入門【電子書籍】[ アシアル株式会社 ]
楽天ウェブサービスセンター
商品更新日時:
2017/03/23 17:12:02

一言掲示板です。なにかありましたら以下に書いて書き込みボタンを押して下さい。
管理人による書き込みの確認後、荒らし書き込みでない場合に表示させていただきます。
悪意ある書き込みや挑発的な書き込みと思われる内容は、表示させません。
その為、ちょっと書き込みから表示までに時間がかかってしまいます。ご了承下さい。

(新機能)URLの書き込みも可能にしましたが、内容と関係のないリンクの表示はしないと思います。
また自サイトへのリンクURL書き込みの場合、相互リンクもお願い致します。
お名前

コメント






本日、よく見られるページ
コピペ用 都道府県一覧
衆議院・参議院 議員数の党別割合
家庭用の普通のコンセントは、何Wまで使えるのか?
春の旬野菜といえばなに?
木材の引き戸の滑りを良くする方法
尿はどれくらい溜められるものか?(熟睡できない)
労働者が、会社を訴える時の手続き方法
日本でアメリカは、なぜ「米」と書くのか?
「~をば」ってどういう意味?
おへその位置がずれる原因は?
  スポンサーリンク

今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ