1

特定の条件に基づいて 2 つの値のいずれかを取る必要がある一連の変数があります。この場合、MySQL データベースから取得された値です。簡単にするために、変数が $var1、$var2、$var3 などであるとしましょう。このように 20 個の変数を設定し、それぞれがフォーム フィールドに関連付けられています。現在、それらの値を決定するロジックは次のようになります。

if($row['condition1'] == 0) //Value pulled from MySQL table {
  $var1 = $_POST['var1']; //Value from a form field
  } else {
  $var1 = $_POST['var1hidden']; //Value from a hidden field
  }

if($row['condition2'] == 0) //Value pulled from MySQL table {
  $var2 = $_POST['var2']; //Value from a form field
  } else {
  $var2 = $_POST['var2hidden']; //Value from a hidden field
  }

これは機能しますが、20 回コピーする必要はありません。$var1-$var20 をループする方法はありますか、それとも、各変数を個別に評価する必要があるため、これに固執していますか?

4

8 に答える 8

1

私があなたのケースを理解したかどうかはわかりませんが、これが私の迅速な解決策になるでしょう

$vars = array('var1' => 'condition1', 'var2' => 'condition2', 'var3' => 'condition3');

foreach ($vars as $var => $condition) {
    if ($row[$condition] == 0) {
        $$var = $_POST[$var];
    } else {
        $$var = $_POST[$var . 'hidden'];
    }
}

変数と条件を配列に保存し(配列構造はもちろん異なる場合があります)、それらをループするだけです

それが役に立てば幸い

于 2013-10-23T12:12:43.973 に答える
1

PHP は、2 つのドル記号の構文を使用する「可変変数」をサポートしています。例えば:

$var1 = 'foo';
$name = 'var1';

echo $$name; // prints "foo"

http://php.net/manual/en/language.variables.variable.php

ただし、本当に多くの変数がある場合は、代わりにそれらを配列に格納することをお勧めします。

于 2013-10-23T12:13:06.860 に答える
1

あなたはこれを行うことができます:

$i=1;
while ($i<=20){
if($row['condition[$i]']==0) {
$var[$i] = $_POST['var[$i]'];
} else {
$var[$i] = $_POST['var[$i]hidden'];
}
$i++;
} // END OF YOUR WHILE LOOP
于 2013-10-23T12:15:20.490 に答える
0

Amal には $row 変数が不足していると思います。次のように、コードを減らすために三項演算子を使用できます。

for ($i=1; $i <= 20; $i++) { 
  $row['condition'.$i] == 0 ? ${'var'.$i} = $_POST['var'.$i] : ${'var'.$i} =    $_POST['var' . $i . 'hidden'];
}
于 2013-10-23T12:20:46.537 に答える
0

Chris いくつかの POSTS 変数を取得するには、このソリューションが必要だと思います。私のアドバイスは、HTML コードですべての入力ボックスの名前を「var1」、「var2」、「var3」などから「var[]」に変更することを確認することです。

HTML 側の例

<input type="text" name="var[]" >
<input type="text" name="var[]" >
<input type="text" name="var[]" >
<input type="text" name="var[]" >
<input type="text" name="varhidden[]" >
<input type="text" name="varhidden[]" >
<input type="text" name="varhidden[]" >
<input type="text" name="varhidden[]" >

PHP 側の例

$vars = $_POST[ "var" ];
$vars_hidden = $_POST[ "varhidden" ];

$vars_result = array();

if( !empty( $vars ) ){
    for( $v = 0; $v < count( $vars ); $v++ ){

        if( isset( $vars[ $v ] ) ){
            $vars_result[ $v ] = $vars[ $v ];
        } elseif( isset( $vars_hidden[ $v ] ) ){
            $vars_result[ $v ] = $vars_hidden[ $v ];
        } else {
            $vars_result[ $v ] = NULL;
        }

    }
}

-->

?>

于 2013-10-23T12:26:08.377 に答える
0

{あなたは必要ありません}

if($row['condition1'] == 0) $var1 = $_POST['var1']; //Value from a form field
else $var1 = $_POST['var1hidden']; //Value from a hidden field 
if($row['condition2'] == 0) $var2 = $_POST['var2']; //Value from a form field
else $var2 = $_POST['var2hidden']; //Value from a hidden field

あなたがすることができます:

foreach ( $row as $key => $value ) {
  if($value == 0) $$var.($key+1) = $_POST['var'.($key+1)]; //Value from a form field
  else $$var.($key+1) = $_POST['var'.($key+1).'hidden']; //Value from a hidden field 
}
于 2013-10-23T12:14:09.630 に答える