2011-07-14 9 views
0
$class = array('c1', 'c2', 'c3', 'c4'); 

$people['c1'] = 'A'; 
$people['c2'] = 'B'; 
$people['c3'] = 'C'; 
$people['c4'] = 'D'; 

foreach ($class as $key) 
{ 
    echo "Name: ".$people[$key]."\n"; 
} 

result : 

A 
B 
C 
D 

私は$クラスに新しい50の値を追加し、$人々PHP - 今のアレイの制限

いくつかのホストにeverthing罰金、しかしhostpapa.com

でのみだけでなく36時間を実行するループとき。

36+から、いくつかの値がnull($人[$キー] = null)の

ある私はなぜ知りません。多分設定が配列を制限するのでしょうか?

注:Suhosinは、このホスト

+0

なぜあなたはhostpapa.comに尋ねなかったのですか? – genesis

+1

通常のバージョンのPHPでは配列を制限することはできません。メモリの制限だけが適用されますが、それは36の小さな文字列では問題ではないかと疑います。 – deceze

+2

また、50個の値を「追加」してヌル値を発生させるコードを表示してください。タイプミスの可能性が高くなります。 –

答えて

2

私の推測によれば、ホスティング会社はSuhoshinというPHPの「セキュリティ強化版」を実行している可能性があります。

Suhoshinは、フィールドの長さや配列の大きさのようなものを制限する機能など、PHPのためのセキュリティ強化機能を多数実装 - http://www.hardened-php.net/suhosin/configuration.html

を参照してくださいそれはあなたのコード内で何かがSuhoshinのフィルタのいずれかをトリガしている可能性があり。

いずれにしても、これはホスティング会社と相談する必要があるようです。

+0

おそらく、phpinfoにSuhosinがあることを確認します.... – Chameron

0
$class = array('c1', 'c2', 'c3', 'c4'); 

$people[c1] = 'A'; 
$people[c2] = 'B'; 
$people[c3] = 'C'; 
$people[c4] = 'D'; 

foreach ($class as $key) 
{ 
    if(key() > 36) { 
    break; 
    } 
    echo "Name: ".$people[$key]."\n"; 

私はこれをテストしていなかった上instlledされ、それが働かなければならないのです。 }

0

foreachステートメントの処理内容によっては、スクリプトの実行期限に制限があるためです。

foreach内のループごとに比較的時間を消費するものを作成すると、数分で簡単に追加でき、これはphp.iniの実行時間制限に入る可能性があります。