2011-07-14 80 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 - 阵列限制

,但hostpapa.com

循环只运行以及36时。

从36+,一些值为空($人[$关键] = NULL)

我不知道为什么。也许一个设置限制数组?

注:在了Suhosin这instlled主机

+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"; 

我没有测试这个,但它必须工作。 }

0

根据您在foreach语句中所做的操作,它可能是由于脚本的执行时间限制造成的。

如果你在foreach中每循环做相对耗时的东西,这可以很容易地加起来达到几分钟,这可以运行到php.ini中的执行时间限制。