質問
PHP SPLFileObjectでイテレータとしてファイルを処理することができます。
しかし、私は理解していない動作があります。あなたがオブジェクトの上に次の()を呼び出すときには、キーの値を(増分)がありますが(現在呼び出さない限り、ファイル内の行を進めていません)各反復で。 SPLドキュメントは、(そのキーを述べる)現在の行番号を返す。
再現するコード:
test.txtの
0
1
2
3
iterator.php
<?php
$fi = new SPLFileObject('test.txt');
echo $fi->current() . "\n"; // prints 0
echo $fi->key() . "\n"; //prints 0
$fi->next();
$fi->next();
$fi->next();
echo $fi->current() . "\n"; // prints 1, expecting 3
echo $fi->key() . "\n"; //prints 3
私が見ることができるものから、次は、このセクションで作業していません。私はこのようにそれを使用する場合は進みます。
iterator_fix.php
<?php
$fi = new SPLFileObject('test.txt');
echo $fi->current() . "\n"; // prints 0
echo $fi->key() . "\n"; //prints 0
$fi->next();
$fi->current();
$fi->next();
$fi->current();
$fi->next();
echo $fi->current() . "\n"; // prints 3 as expected
echo $fi->key() . "\n"; //prints 3
これはバグである場合は、それが行動意図されている場合、誰が説明してもらえますか?
GoogleとPHPのフォーラム上で見て、何も来ません。事前に感謝します。
他のヒント
それはそれがために意図されているものだとして
まあ、いずれにしても、なぜあなたは、foreachのとそれを使用していない?
所属していません StackOverflow