PHPの配列を使った「これって便利かも?」と思う使い方を紹介したいと思います。
その前に、これも配列なんですよね。
$_POST[‘INPUTタグで指定したNAME‘];
$_GET[‘URLに付随した引数の名前‘];
$_POSTは、呼び出す前のINPUTタグのNAMEを指定することでVALUEの値を受け取れます。
呼び出し前 <input type=”hidden” name=”sample” value=”sample_data”> の場合に、呼び出されたソース上に $data = $_POST[‘sample’]; とすることで、$data には sample_data という値が入ります。
$_GETは、呼び出されたURLが、 http://~~~/sample.php?sample=sample_data であれば $data = $_GET[‘sample’]; とすることで、$data には sample_data という値が入ります。
こう考えるとPHPの配列の考え方はプログラミングする上で大変簡単です。
C なんかだと、わざわざ引数を取得する関数を用意する必要があったんですよね(と言っても、1回作れば使いまわしできるんですけどね)
本題に戻りますが、これは少し前に他の方が作ったホームページの修正を楽に出来ないか?ということで考えた方法です。
偉そうに考えたと言ってますが、同じ様な手法を使われてる方も多くいらっしゃるかもしれませんし、もしかしたら定石の手法かもしれません(笑)
これは、1つまたは複数のページ内に、不定期に順序を変更する可能性があるリストのようなものをミスすることなく並べ替えるという事を考えたものです。
メニューの並びや、画像の並びなどを並び替えるときに、同じ法則で複数個を並び替える為の作業をすると抜けがあったりします。
全く同じものであれば、INCLUDE 等を使い別ファイルで作ったものを読み込むことで解決しますが、そうでない場合は作業抜けが発生する可能性があります。
たとえば、以下のような情報を掲載したスポーツチームのランキングページを作ったとします。
1位 Aチーム Aチームの概要情報 2位 Bチーム 3位 Cチーム |
チーム一覧 Aチーム Bチーム Cチーム |
これは例ですので2セットしかありませんが、ヘッダやフッダなどにもプルダウンメニュー等で並びを変更する可能性がある箇所があれば並び替えが大変です。
1位 Aチーム Aチームの概要情報 2位 Cチーム 3位 Bチーム |
チーム一覧 ・Aチーム ・Cチーム ・Bチーム |
こんな感じですね。
これを、配列変数とループを使って1箇所の訂正で全部並び替えれるようにと言うのが今回の内容です。
まず、表示する情報を全て配列変数に入れてしまいます。
$gaiyou[‘A’] = ‘<div>Aチーム<br>
Aチームの概要情報</div>’;
$gaiyou[‘B’] = ‘<div>Bチーム<br>
Bチームの概要情報</div>’;
$gaiyou[‘C’] = ‘<div>Cチーム<br>
Cチームの概要情報</div>’;
$list[‘A’] = ‘Aチーム’;
$list[‘B’] = ‘Bチーム’;
$list[‘C’] = ‘Cチーム’;
?>
そして並び順を決めるための変数も用意します。
$rank[1] = ‘A’;
$rank[2] = ‘B’;
$rank[3] = ‘C’;
?>
最後に本分を入れたい場所で
for($i=1;$i<4;$i++) {
echo $list[$rank[$i]];
}
?>
for($i=1;$i<4;$i++) {
echo $i.’位’.$gaiyou[$rank[$i]];
}
?>
などと記載すればOKです。
この後に並び替えを行う場合は、$rank を指定してる部分だけを変更すればOKです。
$rank[1] = ‘A’;
$rank[2] = ‘C’;
$rank[3] = ‘B’;
?>
こんな感じです。
複数のページに渡って同じ並びを扱う場合は、$rank を指定してる部分を別ファイルにして、必要なページ全てで読み込む(INCLUDEする)ことによって、その部分だけ訂正すれば自動的に全ページで並び替えが行えます。