2014

3

20

PHPでURLに付いたパラメーターから多次元連想配列で判定処理してやんよ!!!

Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

今回はリンクしたページ先でURLに付属したパラメーターを判定して条件に合った処理を行います。

多次元連想配列で条件と処理を指定する

多次元連想配列にそれぞれ出力させる引き数を割り当てる
第1引き数・・・・・URLに付加するパラメーター用の引き数(number
第2引き数・・・・・classで装飾させるための色用の引き数(color
第3引き数・・・・・条件に合った処理を出力させる文字列(output
以上の多次元連想配列を数種類用意し、個別にどの条件にも当てはまらない場合の際に出力させる変数(null )に適当な文字列を代入。

PHPの記述

	$null = 'Kマネ';
	$dataArray[] = array('number'=>'01','color'=>'赤','output'=>'リーダー');
	$dataArray[] = array('number'=>'02','color'=>'黄','output'=>'しおりん');
	$dataArray[] = array('number'=>'03','color'=>'ピンク','output'=>'あーりん');
	$dataArray[] = array('number'=>'04','color'=>'紫','output'=>'れにちゃん');
	$dataArray[] = array('number'=>'05','color'=>'緑','output'=>'ももか');
	$dataArray[] = array('number'=>'06','color'=>'黒','output'=>'箱');

配列の条件処理

フィールド値として設定した多次元連想配列(dataArray)と変数nullをURLに付加されたパラメーターを元に処理をさせます。

PHPの記述

	if (isset($_GET['no'])) {
		$classNo= $_GET['no'];
		foreach($dataArray as $data) {
			if ($data['number'] === $classNo) {
				$outColor = $data['color'];
				$outPush = $data['output'];
			}
		}
	}else{
				$outColor =  '無し';
				$outPush = $null;
	}

PHP処理の解説

  • isset関数でURL後のパラメーターをGET変数で取得し、その中に"no"が存在するかを条件分岐で判断。
  • ②GET変数内に"no"パラメーターが存在する場合はその値を変数$classNoに代入。
  • ③その後、foreach文で配列変数$dataArrayをキー変数となる$dataに代入されます
  • ④さらにそこから連想配列"number"と変数$classNoの値が一致しているか判定
  • ⑤foreachによって$dataArrayの値が代入された配列$dataの値が順々に比較され④の条件を満たしたのものを変数$outColorと変数$outPushにそれぞれ代入される
  • ⑥①の条件から外れた場合は変数$outColorには"無し"(パラメーターは付けていない)、変数$outPushにはフィールド値で指定した"Kマ ネ"の文字列が入った変数$nullを代入。

出力先HTMLファイルの作成

PHPの処理が行われたそれぞれの変数を出力させるための記述です。パラメーターが着いたURLから処理されたそれぞれの変数の入った値が出力されます。

HTMLの記述

<!--現在のパラメーター確認用-->
<p>現時のパラメーター <?php print($_GET['no']); ?></p>

<p>「<span class="a<?php echo $classNo; ?>"><?php echo $outColor; ?></span>」を選んだアナタは
『<span class="a<?php echo $classNo; ?>"><?php echo $outPush; ?></span>』推しです。</p>
spanタグに装飾を付ける際のクラス名も変数$classNoから出力させるのであらかじめ用意しているパラメーターの数だけ装飾用のクラスも用意しておきましょう

CSSの記述

span {color:#999;}
span.a01 {color:#ff0000;}
span.a02 {color:#FFFF00;}
span.a03 {color:#F6F;}
span.a04 {color:#90F;}
span.a05 {color:#0C0;}
span.a06 {color:#000;}

デモページ

上記のパラメーター条件を処理するデモページがコチラ 各リンクでパラメーターごとの処理がされます。 特定箇所の文字列や複数のリンクやアドレスを使い分けるときなどに使えると思います。 というか結構いろいろと応用できそう。
Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

トップへ