写入.txt文件,但是我的while循环是无限的

时间:2018-08-26 03:23:15

标签: php

我正在使用PHP写入txt文件,但是我的while循环无限循环。我看到了其他问题,他们提到未添加counter ++,但是我有递增计数器。为什么我的while循环无限循环?我要完成的工作是,每次在html表单上单击“提交”按钮时,只需添加一行代码。

PHP

    <?php

   if(isset($_POST['firstname']) && isset($_POST['lastname']))
    {
        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];

    $filename ='person.txt';

    $fp = fopen($filename, 'w'); 

    $cntr = 0;

    while(true){

        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];

        if(empty($firstname) && empty($lastname))
        {
            break;
        }

        $cntr++;

        print($firstname . " " . $lastname . " " . "<br");
        $output = $firstname . " " . $lastname . "\n";
        fwrite($fp, $output);
    } //END OF WHILE LOOP

    }//END ISSET
    fclose($fp);


?>

4 个答案:

答案 0 :(得分:2)

使循环停止在代码中的唯一方法是使用<TextView android:id="@+id/textView" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginLeft="132dp" android:layout_marginStart="132dp" android:text="@string/helegrtsrewfrtsaw" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> ,显然没有调用它。

您的计数器对代码没有任何贡献,只能增加自己的数量。由于break;的总评价为while(true),因此它将永远循环。如果要使用计数器,请设置while循环true的条件,但是需要将while($cntr < $max)定义为一个值,例如10。

答案 1 :(得分:1)

您不需要任何while循环。代替一会儿,只要做一个if..else ...

    if( (strlen($firstname) < 1) || (strlen($lastname) < 1) ){

        // do Nothing Or report error

    }else{

                print($firstname . " " . $lastname . " " . "<br");
                $output = $firstname . " " . $lastname . "\n";
                fwrite($fp, $output);


    }

答案 2 :(得分:0)

代码在这里是错误的: if(empty($firstname) && empty($lastname)) { break; }

如果名字和姓氏不为空,则循环将永远不会结束。

答案 3 :(得分:0)

  1. 如果您设置名字和姓氏,则它们永远不会为空。(根据 您的代码)。因此循环将无限。
  2. 另一件事是您的$cntr     变量不可用。它只会增加而不会影响您     代码。

如果您要更正此问题。只需将以下片段添加到while循环的底部

$ firstname = null; $ lastname = null;

while(true){

    if(empty($firstname) && empty($lastname))
    {
        break;
    }

    $cntr++;

    print($firstname . " " . $lastname . " " . "<br");
    $output = $firstname . " " . $lastname . "\n";
    fwrite($fp, $output);


    $firstname = null;
    $lastname = null;
}