人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[PHP] 配列に値を入れていくとエラーになりプログラムが落ちます。原因と対処法を教えて下さい。

詳細)
ループで配列に値を入れていくと、(推測ですが)配列の許容数をオーバーしてエラーになりプログラムが落ちます(ブラウザがアラートダイアログを返し、ブラウザは真っ白です)。

原因と対処法を教えて下さい。

よろしくお願い致します。

●質問者: k2017
●カテゴリ:ウェブ制作
✍キーワード:[php] アラート エラー オーバー ダイアログ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● Xegnyph
●5ポイント

>配列の許容数をオーバーしてエラー

と、原因がわかっているのであれば、必要な配列を用意すればいいのでは?

◎質問者からの返答

あくまで推測です。

配列のサイズを増やしながら値を入れています。それでもエラーになります。

そもそも許容数というものがあるのかどうかを知りたいです。


2 ● きゃづみぃ
●5ポイント

配列は、確保した分を 超えると エラーになるのが 通常だと思われます。

なので、宣言時に 多めに配列を確保する。

か、もしくは動的で 使う前に確保するかのどちらかでしょう。

◎質問者からの返答

宣言の仕方が知りたいです。


3 ● disca
●20ポイント

http://php.s3.to/man/function.set-time-limit.html

可能性として考えられるのは、タイムアウトが発生した

ことが考えられます。PHPを連続して動作させる方法として、

set_time_limit という関数がありますので、一度お試しください。

◎質問者からの返答

あっという間にエラーを返します。

ただ原因はそれに近いような気がします。


4 ● masasan
●30ポイント

配列の宣言について

http://www.res-system.com/weblog/item/128

>変数定義時に明示的な型定義を必要としない(サポートしない)そうです。

サポートしないの?ソースは不明。

http://www.atmarkit.co.jp/flinux/php4/php4_3/php4_3.html

>多次元配列の要素には数値添字と文字列添字を混在でき、次元数の制限はありません。

次元に制限がないなら、配列に制限がない可能性も。

すると、OSやメモリなどシステムの上限が限界になるのかも。

http://php.benscom.com/manual/ja/function.stream-select.php

>注意: 配列に返されたストリームに対して読み込みまたは書き込み操作を行う際に、 必ずしもあなたの希望しただけデータが読まれたり書かれたりはしないことに 注意してください。たった 1 バイトしか読み出せない場合も、書き込めない 場合もあるのです。

こういうこともあるようで。

配列に入れるサイズを10倍くらいにして、どこまで許容されるか元と比較すれば状況が少しは分かるかもしれません。

解決のお役にたてば。

◎質問者からの返答

> すると、OSやメモリなどシステムの上限が限界になるのかも。

これかも知れません。

既定値などを詳しく知りたいです。対処法も知りたいです。


5 ●
●50ポイント ベストアンサー

配列の許容量というものはありませんが、スクリプトが確保できる最大メモリを指定している設定があります。

このmemory_limitが効いており、エラーになっているのではないでしょうか。

回避するためにはphp.iniの内容を書き換えるか、ini_setで設定を変更する必要すれば良いはずです。

ini_set("memory_limit", "16M");

上記の例ではmemory_limitを16MBに変更しています。

(デフォルトでは8MBか16MBに設定されています。)

また、「ブラウザがアラートダイアログを返し」とありますが、どのような内容になっていますか。

そこに出ているエラーメッセージが解決のヒントになると思います。

以降の回答者の方の参考になるように情報を開示していただけますでしょうか。

可能であれば、問題が発生するソースも開示するより確実な回答がつくと思います。

(全ソースは問題がある場合、配列の部分に特化した簡単なサンプルを提示していただければ良いと思います。)

参考になると幸いです。

◎質問者からの返答

ありがとうございます。解決いたしました。

エラーは以下でした。ブラウザによっても違うと思います。

「アクセス中のURL:〜の読み込みに失敗しました」

(あまり奨励されるやり方ではありませんが)簡単な質問文で的確な答えが返ってくるか知りたかったという思いがありました(同じトラブルにあわれた方が多ければすぐに正解が出るし、否なら逆)。すみません。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ