- ベストアンサー
変数が多い場合の処理について
test1.phpで入力画面を作成し、 test2.phpでtest1.phpで入力された項目の表示をしたいと考えています。 test1.phpで入力項目が20個あり、 変数名が $insert_data1, $insert_data2, ....$insert_data30 と30個ほどあります。 test2.phpでこの30個の入力データを表示させる場合、 print $insert_data1; print $insert_data2; ・ ・ ・ print $insert_data30; とするとちょっと長いので for文とか、while文とか使用して、簡潔に作成したい と考えています。 また変数は今は30個ですが、増えたり、減ったりする かもしれないので、できれば動的に対応するもので あってほしいと考えています。 いいたいことがうまく伝わらないのですが、 ↓みたいにしたいということです。(これはできないとおもいますが・・・) for($cnt=0;$cnt<count($insert_data***);$cnt++){ print $insert_data.$cnt; } です。アドバイスお願いしますm(_ _)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
入力項目が20個なのに30個値がある…と言うのは 隠し要素があるって事でしょうか… 一応可変変数を使用すれば実現可能です。 例: for($cnt = 0; $cnt < count($_REQUEST); $cnt++){ print ${"insert_data".$cnt} } もし配列に出来なくてやむなく今回の処理を行っているのでしたら、 <input type="text" name="insert_data[]" value="a"> <input type="text" name="insert_data[]" value="b"> と言う感じでname要素の末尾に[]をつけた要素にすれば 配列の形でデータが格納されます。
その他の回答 (1)
- yatokesa
- ベストアンサー率40% (201/496)
まず、 $insert_data1 という定義を $insert_data[1]のように配列にすることは出来ないのでしょうか?これが最もわかりやすくて簡単な方法だと思います。 PHPでは可変変数という方法が使えます。 > print $insert_data.$cnt; $var = "insert_data{$cnt}"; print $$var; とすると出力されると思います...たぶん... #未テスト
お礼
返信ありがとうございました。 配列に変更して値を取得することができました。 よかったです。 どうもありがとうございました。
お礼
すみません、質問がわかりづらくて。。。 20個や30個などに変化するのはただ、入力項目が 増えたり減ったりするということです。 今、配列に変更した結果うまく値を得ることができました。 ありがとうございました。