0

私がこの入力を持っているとしましょう:

<input type="hidden" name="block-1" value="001"/>
<input type="hidden" name="block-2" value="012"/>
<input type="hidden" name="block-3" value="002"/>
<input type="hidden" name="block-4" value="005"/>
<input type="hidden" name="block-5" value="008"/>

このPHPループを使用してこれらの入力を処理したい

$i = 1;

do {
    $x = 'block-'.$i;
    $webBlock = $_POST[$x];
    //some codes here
    $i++;
}

while (!empty($webBlock));

なぜ私はいつも6つの出力を持っているのですか?そして最後のものは空白の出力です。ループは常にn+1を実行しているようです。与えられた入力の数に基づいて正しいループを作成する方法は?ありがとう!

4

6 に答える 6

1

beacause doは、式の実行中に実行される可能性のあるものが少なくとも1回は実行されます。do while is an exit control loop.

于 2012-10-19T11:14:28.383 に答える
1

これを試して:

$i = 0;

do {
    $i++;
    $x = 'block-'.$i;
    $webBlock = $_POST[$x];
    //some codes here
}
while (!empty($webBlock));

UPD:最良のアプローチはこれです:

for ($i = 1; $i <= count($_POST); $i++) {
    $webBlock = $_POST['block-'.$i];
    //some code here
}
于 2012-10-19T11:13:39.113 に答える
1

繰り返しループを使用しているため、whileループを使用する必要があります。

while (!empty($webBlock)){
    $x = 'block-'.$i;
    $webBlock = $_POST[$x];
    //some codes here
    $i++;
}
于 2012-10-19T11:13:59.123 に答える
1

必要whileですか?

私は一緒に行きます:

$i=0;
foreach($_POST as $name => $value)
{
   if( strpos($name , 'block-') !== false ) echo $i . " - " . $name . ": " . $value;
   $i++;
}

''という名前のアイテムを説明する必要があると信じていますblock-nif声明は基本的に「フィールドの名前のどこかにある場合はblock-、そのようなものをエコーアウトする」と述べています。エラーが発生した場合はお知らせください。修正します。

于 2012-10-19T11:16:32.817 に答える
0

私はPHP開発者ではないので、あなたが何をしているのかについての一般的な考えをお伝えします。

実際には、Do-whileExitControlループと呼ばれることもあるループを使用しています。したがって、Do-Whileの場合、コードを実行した後、条件がチェックされます。したがって、「webBlock」で値を取得しなかった場合でも、コードが実行されます。だから、これはあなたのバグです。

これの代わりに、 Whileループ、エントリ制御ループを使用できます。条件が真の場合にのみ、コードが実行されます。

$i = 1;
while (i>0) {
     $x = 'block-'.$i;
     $webBlock = $_POST[$x];
    if(empty($webBlock))
    {
      break;
   }
   $i++;
}
于 2012-10-19T11:35:11.777 に答える
0

使用しているためDo While loop。データについてはよくわかりませんが、期待どおりにもう一度実行されると言わざるを得ません。繰り返して確認してみましょう。空ではなく、5回と同じで
あるため、最初に実行されます。ここでループを閉じたいのですが、5回目の反復の条件が真になります。これでもう一度実行されて何も表示されなくなり($ webBlockに何もないため)、条件は空であることがわかります。ここで使用することをお勧めします。問題が解決します。$webBlock
$webBlock
while loop

于 2012-10-19T11:16:28.863 に答える