我正在使用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);
?>
答案 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)
$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;
}