前書き
商品予約サイトを想定して、ユーザーが選択した複数の商品情報を配列で持ち、そのデータを処理する際に可変変数に商品情報を代入したいと考えました。
POSTされた配列を可変変数に代入
$_POST['item']
の中身を$item
とループ回数
を組み合わせた名前の変数に代入します。
$_POST['item']のデータ例
$_POST['item']には、ユーザーが選択した商品のID(アルファベット+4桁の数字)が格納されているとします。
var_dump($_POST['item'])
で配列の中身を確認します。
array(4) { [0]=> string(5) "S1001" [1]=> string(5) "S1035" [2]=> string(5) "S1056" [3]=> string(5) "S1203" }
foreachで配列を変数に代入
${'変数名'.ループ回数}
で、可変変数を生成します。
$i = 0;
foreach($_POST['item'] as $key => $value){
${'select_item'.$i} = $value;
$i++;
}
変数の確認
echo $select_item1;
S1001 //結果
echo $select_item2;
S1035 //結果
echo $select_item3;
S1056 //結果
echo $select_item4;
S1203 //結果
後書き
$select_item
のそれぞれの変数を使う際には$select_item
が何個生成されているのかをチェックしなければ使えないのではと思いました。
他にもっと良いやり方がありそうです。