dポイントプレゼントキャンペーン実施中!

次のように、同じような構文を50ブロック続けて書きたいですが、
それでは芸がないので、forを使ったループ文を書けばよいと思います。
変数から変数を作成する方法があったと思います。

法則性としては、$pjtProperty●● という風に、●●部分が01~50までカウントアップしています。
01~09までは、十の位に「ゼロ」を補完しております。

for文の下記ぶりをご教示いただけないでしょうか。


if ($_POST["cancel"] != "") {
$pjtProperty01 = "";
} elseif ($_POST["upd"] != "" && $_POST["reg"] == "") {
$_POST["pjtProperty01"] = $col["pjtProperty01"];
$pjtProperty01 = " checked";
} elseif ($_POST["pjtProperty01"] != "" || ( $col["pjtProperty01"] != "" && $_POST["reg"] == "" )) {
$pjtProperty01 = " checked";
}

//上と違うのは、01が02になっただけ。

if ($_POST["cancel"] != "") {
$pjtProperty02 = "";
} elseif ($_POST["upd"] != "" && $_POST["reg"] == "") {
$_POST["pjtProperty02"] = $col["pjtProperty02"];
$pjtProperty02 = " checked";
} elseif ($_POST["pjtProperty02"] != "" || ( $col["pjtProperty02"] != "" && $_POST["reg"] == "" )) {
$pjtProperty02 = " checked";
}

//上と違うのは、02が03になっただけ。

if ($_POST["cancel"] != "") {
$pjtProperty03 = "";
} elseif ($_POST["upd"] != "" && $_POST["reg"] == "") {
$_POST["pjtProperty03"] = $col["pjtProperty03"];
$pjtProperty03 = " checked";
} elseif ($_POST["pjtProperty03"] != "" || ( $col["pjtProperty03"] != "" && $_POST["reg"] == "" )) {
$pjtProperty03 = " checked";
}


以下、pjtProperty04~pjtProperty50まで続く。

A 回答 (1件)

ためしてないけど



for ($i=1; $i<=50; $i++) {
$pjtProperty = "pjtProperty".sprintf('%02d', $i);

if ($_POST["cancel"] != "") {
${$pjtProperty} = "";
} elseif ($_POST["upd"] != "" && $_POST["reg"] == "") {
$_POST[$pjtProperty] = $col[$pjtProperty];
${$pjtProperty} = " checked";
} elseif ($_POST[$pjtProperty] != "" || ( $col[$pjtProperty] != "" && $_POST["reg"] == "" )) {
${$pjtProperty} = " checked";
}
}

こんな感じで行けると思います。
    • good
    • 0
この回答へのお礼

foreachさん、お礼が大変遅くなって失礼しました。

本日該当作業のところにようやく着手しまして、ばっちり動作を確認できました。

それにしても効率的な書き方ができるものですね。

わたしの中では革命的です。

本当に助かりました。ありがとうございました。

お礼日時:2011/08/18 16:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!