1

約 40,000 エントリの配列を作成するスクリプトがあります。PHP 配列には、サーバーのメモリ以外に制限はありません...

implode()ただし、約 40,000 エントリの配列を文字列に内破しようとすると、PHP 関数は単純に何も出力しません。各配列エントリには、約 Z 文字相当の文があります。メモリ エラーはありません。エラーはまったくありません。

誰でもこれを確認できますか?

例を投稿できるかどうかわかりません!

編集(2013-06-03):

PHP メモリ制限が -1 に設定され、PHP エラーが E_ALL に設定されていることを確認できます。エラーがなく、単に出力がありません。これは、ある種の PHP のバグのようです。

私は使用echo implode("<br>\n", $myLogArr);していましたが、エラーも出力もありませんでした。使用して正しい期待される結果を得ることができましたforeach ($myLogArr as $line) echo $line."<br>\n";

4

3 に答える 3

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を増やして、これをさらにデバッグすることをお勧めします。

アンソニー。

于 2013-05-31T14:57:01.100 に答える
0

memory_limit を -1 にしてから、try catch ブロックでスクリプトを実行します

于 2013-05-31T14:56:09.970 に答える
0
$string = str_repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,",1000000);
$array = explode(",", $string);
var_dump(sizeof($array), strlen(implode(",", $array)));

出力:

int 1000001
int 53000000

OP、あなたのコードを見せてもらえますか?

于 2013-05-31T14:57:10.973 に答える