2013-05-31 55 views
1

我有一個創建了約40,000項數組中的腳本,PHP陣列試圖破滅時有除了服務器的內存沒有限制......PHP內存限制錯誤?

但是PHP函數implode()根本不輸出任何東西,大約40,000個條目到一個字符串中的數組。每個數組條目都包含一個值得一個Z字符的句子。沒有內存錯誤,根本沒有錯誤!

任何人都可以證實這一點嗎?

我不確定它可能發佈的例子!

編輯(2013年6月3日):

我可以確認的是,PHP內存限制設置爲-1和PHP錯誤是對E_ALL。那裏沒有錯誤,根本沒有輸出。 這似乎是某種PHP的錯誤。

我使用echo implode("<br>\n", $myLogArr);有沒有錯誤或輸出任何東西,我已經mananage使用foreach ($myLogArr as $line) echo $line."<br>\n";

+1

您是否檢查過? http://stackoverflow.com/questions/13845927/possible-limitation-of-implode-function-in-php – Ergec

+1

難道你沒有達到'php.ini'中設置的'memory_limit'嗎? –

+0

set_time_limit也檢查.... put set_time_limit(0);在你的代碼的開始,然後嘗試運行它。 – Sharky

回答

0

memory_limit的爲-1,以獲得正確的預期結果,然後在try catch塊執行腳本

1

下面的工作很好 - 有50,000個條目。

<?php 
$arr = array(); 
for ($i = 0; $i < 50000; $i++) { 
    $arr[] = str_shuffle('This sentance is of average length, which The Internet says is about 14.2 words.'); 
} 
echo implode(PHP_EOL, $arr); 

我建議增加error_reporting並試圖進一步調試。

安東尼。

0
$string = str_repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,",1000000); 
$array = explode(",", $string); 
var_dump(sizeof($array), strlen(implode(",", $array))); 

輸出:

int 1000001 
int 53000000 

OP,你可以請出示你的代碼?