php
1$param_r1 = $_GET[r1]; 2$param_r2 = $_GET[r2]; 3$param_r3 = $_GET[r3]; 4$param_r4 = $_GET[r4]; 5$param_r5 = $_GET[r5]; 6・ 7・ 8・
現在こんな感じでものすごく効率が悪いのですが、
簡潔な方法があったりしますでしょうか?
ご教示のほどよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
フォーム側で配列にしてしまって、受け取り側で配列として受け取るのが一般的ですかね。
HTML
1<input name="r[]" type="text"> 2<input name="r[]" type="text"> 3<input name="r[]" type="text"> 4<input name="r[]" type="text"> 5<input name="r[]" type="text">
PHP
1$r = $_GET['r']; // $rは配列になっていて、フォームのnameがr[]の要素が上から順に入っている
投稿2017/11/20 09:01
総合スコア9206
0
PHP は詳しくはわかりませんが、${}
と文字列で指定してあげると、for
などに記述をまとめられるようです
php
1<?php 2 3// 連番の変数名を用意 4$r1 = 1; 5$r2 = 2; 6$r3 = 3; 7$r4 = 4; 8$r5 = 5; 9 10// 「param_r + 数字」な変数に割り当て 11for($i = 1; $i < 6; $i++) { 12 echo ${'r'.$i}; 13 ${'param_r'.$i} = ${'r'.$i}; 14} 15// => 12345 16echo "\n"; 17 18// 呼び出し 19echo $param_r1; 20echo $param_r2; 21echo $param_r3; 22echo $param_r4; 23echo $param_r5; 24// => 12345
(補足事項あればコメントないし新規回答をお願いします)
投稿2017/11/20 09:02
総合スコア2321
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
あまりよい命名方法には見えませんが、どうしてもと言うならこんな感じ
PHP
1<form method="get"> 2<input type="text" name="r1" value="aaa"><br> 3<input type="text" name="r2" value="bbb"><br> 4<input type="text" name="r3" value="ccc"><br> 5<input type="text" name="r4" value="ddd"><br> 6<input type="text" name="r5" value="eee"><br> 7<input type="submit" value="go"> 8</form> 9<?PHP 10$r=array_walk($_GET,function($x,$y) use(&$param_r1,&$param_r2,&$param_r3,&$param_r4,&$param_r5){ 11 if(preg_match("/^r[1-5]$/",$y)){ 12 ${"param_".$y}=$x; 13 } 14}); 15print $param_r1." ".$param_r2." ".$param_r3." ".$param_r4." ".$param_r5; 16?>
送り出すnameをr[]形式に調整したり、受け取る$paramを配列にしたりすると効率的
PHP
1<form method="get"> 2<input type="text" name="r[1]" value="aaa"><br> 3<input type="text" name="r[2]" value="bbb"><br> 4<input type="text" name="r[3]" value="ccc"><br> 5<input type="text" name="r[4]" value="ddd"><br> 6<input type="text" name="r[5]" value="eee"><br> 7<input type="submit" value="go"> 8</form> 9<?PHP 10$option=["flags"=>FILTER_REQUIRE_ARRAY,"options"=>[]]; 11$r=filter_input(INPUT_GET,"r",FILTER_DEFAULT,$option); 12$param=[]; 13if(count($r)>0) array_walk($r,function($x,$y) use(&$param){ 14 if(in_array($y,range(1,5))) $param["r".$y]=$x; 15}); 16print_r($param); 17?>
投稿2017/11/20 09:01
総合スコア114968
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。