33554432バイトのメモリサイズが排気可PHPのエラー(93バイトを割り当てしようとしました)
-
20-09-2019 - |
質問
私は、次のコードを挿入します:
$counter = 1;
while($_POST['additional_contact1'] != '' || $_POST['additional_contact2'] != '' || $_POST['additional_contact3'] != '') {
if($_POST['additional_contact' . $counter] != '') {
$_SESSION['contact'][$counter]['additional_contact'] = $_POST['additional_contact' . $counter];
$_SESSION['contact'][$counter]['additional_int_prefix'] = $_POST['additional_int_prefix' . $counter];
$_SESSION['contact'][$counter]['additional_prefix'] = $_POST['additional_prefix' . $counter];
$_SESSION['contact'][$counter]['additional_first'] = $_POST['additional_first' . $counter];
$_SESSION['contact'][$counter]['additional_last'] = $_POST['additional_last' . $counter];
} else {
$_SESSION['contact'][$counter]['additional_contact'] = null;
$_SESSION['contact'][$counter]['additional_int_prefix'] = null;
$_SESSION['contact'][$counter]['additional_prefix'] = null;
$_SESSION['contact'][$counter]['additional_first'] = null;
$_SESSION['contact'][$counter]['additional_last'] = null;
}
$counter++;
}
私はこのエラーを受信した:の致命的なエラー:排出33554432バイトの許容メモリサイズ(割り当てしようとした93バイト)の
私は、ini_set()でメモリ制限を増加させようとしたが、それはまだ96Mで動作しません。私はそれはとても多くのメモリを必要とするために私のコードで間違って何をしているのですか?どのように私はこの問題を解決することができますか?
解決
他の人が言うように、
、あなたは無限ループを作成しました。 for
ループの代わりに使用します。
for($counter = 1; $counter <= 3; $counter++) {
if($_POST['additional_contact' . $counter] != '') {
$_SESSION['contact'][$counter]['additional_contact'] = $_POST['additional_contact' . $counter];
$_SESSION['contact'][$counter]['additional_int_prefix'] = $_POST['additional_int_prefix' . $counter];
$_SESSION['contact'][$counter]['additional_prefix'] = $_POST['additional_prefix' . $counter];
$_SESSION['contact'][$counter]['additional_first'] = $_POST['additional_first' . $counter];
$_SESSION['contact'][$counter]['additional_last'] = $_POST['additional_last' . $counter];
} else {
$_SESSION['contact'][$counter]['additional_contact'] = null;
$_SESSION['contact'][$counter]['additional_int_prefix'] = null;
$_SESSION['contact'][$counter]['additional_prefix'] = null;
$_SESSION['contact'][$counter]['additional_first'] = null;
$_SESSION['contact'][$counter]['additional_last'] = null;
}
}
<時間>
それについて考える:あなたのwhileループでは、あなたが$_POST['additional_contact1'] != ''
かどうかをテストします。しかし、あなたは再びその値を変更することはありません。それは!= ''
があるいったんので、whileループの条件が常にtrue
と評価されます。
他のヒント
たぶん、ループの条件がfalseと評価されたことがない?
あなたはこれ以上のメモリが利用できなくなるまでメモリを消費しますが、無限ループがある場合があります。
while($_POST['additional_contact1'] != '' || $_POST['additional_contact2'] != '' || $_POST['additional_contact3'] != '') {
これらの3つの値が体内で変化していない場合は、は、あなたが作成したとinifiteループ。あなたが代わりにif
を使用する場合がありますが、私は全体の文脈を知らない。
所属していません StackOverflow