2

私のスクリプトは奇妙に振る舞っています。foreachループの後、スクリプトは停止します。Apacheからのエラー、警告、通知はありません。これはコードです:

foreach($clientFact as $line)
{
    $cliTemp1[] = $line["idcliente"];
    echo "qwerty";
}
echo "123";

ループ内に「echo(qwerty」)」を追加すると、「qwerty」が表示されますが、ループの終了直後は何も実行されません。

私は何かが足りないのですか?!

ありがとう

4

3 に答える 3

9

Apacheは、PHPエラーとしてエラーを返しません。追加する

error_reporting(E_ALL | E_STRICT);

ページの上部にあるのは非常に良いアイデアなので、発生するすべてのエラーを確認できます。エラーを表示せず、スクリプトを終了するだけのエラーハンドラーである可能性もあります。

エラーハンドラに問題がある場合は、次を追加します

restore_error_handler();

error_reporting関数の前

編集:配列インデックスに関するコメントを読んでください。毎回特定のインデックスで停止すると、PHPでメモリ制限に達しているように聞こえます。

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

ini_set('memory_limit', '100M');

メモリ制限を100メガに変更します。推奨されませんが、機能する場合は、メモリが不足しているという問題があります。プログラムのリファクタリングを試して、メモリの使用量を減らしてください

于 2009-05-08T13:48:46.713 に答える
4

上記の構文は問題ないように見えるので、ここでは暗闇の中での完全なショットとして、$clientFact配列の大きさはどれくらいですか?$cliTemp1アレイが非常に大きくなり、メモリ制限がトリップする可能性はありますか?

たぶん、「qwerty」をエコーするのではなく、$line["idcliente"]各反復での内容をエコーアウトして、のすべての要素を正常に通過していることを確認します$clientFact

于 2009-05-08T13:31:32.777 に答える
1

推測では、ループ内のエラーで死にかけています。これは、$lineの1つが期待どおりの配列ではなく、エラーが非表示になっているためです。error_reporting(E_ALL)ループの前に設定してみてくださいini_set('display_errors', true)

于 2009-05-08T13:32:19.377 に答える