[php-src] Issue #8947: iterator_to_array did not return all my files
| From: | Dmitrijlin | Date: | Thu, 07 Jul 2022 11:45:12 +0000 |
| Subject: | [php-src] Issue #8947: iterator_to_array did not return all my files | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-241877@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/8947
Author: Dmitrijlin
### Description
The following code:
```php
<?php
$text = <<<END
<?php
namespace App;
class TestFile%s
{
}
END;
for ($i = 1; $i < 100; $i++) {
file_put_contents('./app/TestFile' . $i . '.php', sprintf($text, $i));
}
$dir = '/var/www/backend/app';
$iterator = new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS);
$iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
print_r(array_keys(iterator_to_array($iterator)));
foreach ($iterator as $file) {
echo $file->getFilename() . PHP_EOL;
}
```
Resulted in this output:
```
Array
(
[0] => /var/www/backend/app/TestFile54.php
[1] => /var/www/backend/app/TestFile55.php
[2] => /var/www/backend/app/TestFile56.php
[3] => /var/www/backend/app/TestFile57.php
[4] => /var/www/backend/app/TestFile58.php
[5] => /var/www/backend/app/TestFile59.php
[6] => /var/www/backend/app/TestFile6.php
[7] => /var/www/backend/app/TestFile60.php
[8] => /var/www/backend/app/TestFile61.php
[9] => /var/www/backend/app/TestFile62.php
[10] => /var/www/backend/app/TestFile63.php
[11] => /var/www/backend/app/TestFile64.php
[12] => /var/www/backend/app/TestFile65.php
[13] => /var/www/backend/app/TestFile66.php
[14] => /var/www/backend/app/TestFile67.php
[15] => /var/www/backend/app/TestFile68.php
[16] => /var/www/backend/app/TestFile69.php
[17] => /var/www/backend/app/TestFile7.php
[18] => /var/www/backend/app/TestFile70.php
[19] => /var/www/backend/app/TestFile71.php
[20] => /var/www/backend/app/TestFile72.php
[21] => /var/www/backend/app/TestFile73.php
[22] => /var/www/backend/app/TestFile74.php
[23] => /var/www/backend/app/TestFile75.php
[24] => /var/www/backend/app/TestFile76.php
[25] => /var/www/backend/app/TestFile77.php
[26] => /var/www/backend/app/TestFile78.php
[27] => /var/www/backend/app/TestFile79.php
[28] => /var/www/backend/app/TestFile8.php
[29] => /var/www/backend/app/TestFile80.php
[30] => /var/www/backend/app/TestFile81.php
[31] => /var/www/backend/app/TestFile82.php
[32] => /var/www/backend/app/TestFile83.php
[33] => /var/www/backend/app/TestFile84.php
[34] => /var/www/backend/app/TestFile85.php
[35] => /var/www/backend/app/TestFile86.php
[36] => /var/www/backend/app/TestFile87.php
[37] => /var/www/backend/app/TestFile88.php
[38] => /var/www/backend/app/TestFile89.php
[39] => /var/www/backend/app/TestFile9.php
[40] => /var/www/backend/app/TestFile90.php
[41] => /var/www/backend/app/TestFile91.php
[42] => /var/www/backend/app/TestFile92.php
[43] => /var/www/backend/app/TestFile93.php
[44] => /var/www/backend/app/TestFile94.php
[45] => /var/www/backend/app/TestFile95.php
[46] => /var/www/backend/app/TestFile96.php
[47] => /var/www/backend/app/TestFile97.php
[48] => /var/www/backend/app/TestFile98.php
[49] => /var/www/backend/app/TestFile99.php
)
TestFile1.php
TestFile10.php
TestFile11.php
TestFile12.php
TestFile13.php
TestFile14.php
TestFile15.php
TestFile16.php
TestFile17.php
TestFile18.php
TestFile19.php
TestFile2.php
TestFile20.php
TestFile21.php
TestFile22.php
TestFile23.php
TestFile24.php
TestFile25.php
TestFile26.php
TestFile27.php
TestFile28.php
TestFile29.php
TestFile3.php
TestFile30.php
TestFile31.php
TestFile32.php
TestFile33.php
TestFile34.php
TestFile35.php
TestFile36.php
TestFile37.php
TestFile38.php
TestFile39.php
TestFile4.php
TestFile40.php
TestFile41.php
TestFile42.php
TestFile43.php
TestFile44.php
TestFile45.php
TestFile46.php
TestFile47.php
TestFile48.php
TestFile49.php
TestFile5.php
TestFile50.php
TestFile51.php
TestFile52.php
TestFile53.php
TestFile54.php
TestFile55.php
TestFile56.php
TestFile57.php
TestFile58.php
TestFile59.php
TestFile6.php
TestFile60.php
TestFile61.php
TestFile62.php
TestFile63.php
TestFile64.php
TestFile65.php
TestFile66.php
TestFile67.php
TestFile68.php
TestFile69.php
TestFile7.php
TestFile70.php
TestFile71.php
TestFile72.php
TestFile73.php
TestFile74.php
TestFile75.php
TestFile76.php
TestFile77.php
TestFile78.php
TestFile79.php
TestFile8.php
TestFile80.php
TestFile81.php
TestFile82.php
TestFile83.php
TestFile84.php
TestFile85.php
TestFile86.php
TestFile87.php
TestFile88.php
TestFile89.php
TestFile9.php
TestFile90.php
TestFile91.php
TestFile92.php
TestFile93.php
TestFile94.php
TestFile95.php
TestFile96.php
TestFile97.php
TestFile98.php
TestFile99.php
```
But I expected this output instead:
```
Array
(
[0] => /var/www/backend/app/TestFile1.php
[1] => /var/www/backend/app/TestFile10.php
[2] => /var/www/backend/app/TestFile11.php
[3] => /var/www/backend/app/TestFile12.php
[4] => /var/www/backend/app/TestFile13.php
[5] => /var/www/backend/app/TestFile14.php
[6] => /var/www/backend/app/TestFile15.php
[7] => /var/www/backend/app/TestFile16.php
[8] => /var/www/backend/app/TestFile17.php
[9] => /var/www/backend/app/TestFile18.php
[10] => /var/www/backend/app/TestFile19.php
[11] => /var/www/backend/app/TestFile2.php
[12] => /var/www/backend/app/TestFile20.php
[13] => /var/www/backend/app/TestFile21.php
[14] => /var/www/backend/app/TestFile22.php
[15] => /var/www/backend/app/TestFile23.php
[16] => /var/www/backend/app/TestFile24.php
[17] => /var/www/backend/app/TestFile25.php
[18] => /var/www/backend/app/TestFile26.php
[19] => /var/www/backend/app/TestFile27.php
[20] => /var/www/backend/app/TestFile28.php
[21] => /var/www/backend/app/TestFile29.php
[22] => /var/www/backend/app/TestFile3.php
[23] => /var/www/backend/app/TestFile30.php
[24] => /var/www/backend/app/TestFile31.php
[25] => /var/www/backend/app/TestFile32.php
[26] => /var/www/backend/app/TestFile33.php
[27] => /var/www/backend/app/TestFile34.php
[28] => /var/www/backend/app/TestFile35.php
[29] => /var/www/backend/app/TestFile36.php
[30] => /var/www/backend/app/TestFile37.php
[31] => /var/www/backend/app/TestFile38.php
[32] => /var/www/backend/app/TestFile39.php
[33] => /var/www/backend/app/TestFile4.php
[34] => /var/www/backend/app/TestFile40.php
[35] => /var/www/backend/app/TestFile41.php
[36] => /var/www/backend/app/TestFile42.php
[37] => /var/www/backend/app/TestFile43.php
[38] => /var/www/backend/app/TestFile44.php
[39] => /var/www/backend/app/TestFile45.php
[40] => /var/www/backend/app/TestFile46.php
[41] => /var/www/backend/app/TestFile47.php
[42] => /var/www/backend/app/TestFile48.php
[43] => /var/www/backend/app/TestFile49.php
[44] => /var/www/backend/app/TestFile5.php
[45] => /var/www/backend/app/TestFile50.php
[46] => /var/www/backend/app/TestFile51.php
[47] => /var/www/backend/app/TestFile52.php
[48] => /var/www/backend/app/TestFile53.php
[49] => /var/www/backend/app/TestFile54.php
[50] => /var/www/backend/app/TestFile55.php
[51] => /var/www/backend/app/TestFile56.php
[52] => /var/www/backend/app/TestFile57.php
[53] => /var/www/backend/app/TestFile58.php
[54] => /var/www/backend/app/TestFile59.php
[55] => /var/www/backend/app/TestFile6.php
[56] => /var/www/backend/app/TestFile60.php
[57] => /var/www/backend/app/TestFile61.php
[58] => /var/www/backend/app/TestFile62.php
[59] => /var/www/backend/app/TestFile63.php
[60] => /var/www/backend/app/TestFile64.php
[61] => /var/www/backend/app/TestFile65.php
[62] => /var/www/backend/app/TestFile66.php
[63] => /var/www/backend/app/TestFile67.php
[64] => /var/www/backend/app/TestFile68.php
[65] => /var/www/backend/app/TestFile69.php
[66] => /var/www/backend/app/TestFile7.php
[67] => /var/www/backend/app/TestFile70.php
[68] => /var/www/backend/app/TestFile71.php
[69] => /var/www/backend/app/TestFile72.php
[70] => /var/www/backend/app/TestFile73.php
[71] => /var/www/backend/app/TestFile74.php
[72] => /var/www/backend/app/TestFile75.php
[73] => /var/www/backend/app/TestFile76.php
[74] => /var/www/backend/app/TestFile77.php
[75] => /var/www/backend/app/TestFile78.php
[76] => /var/www/backend/app/TestFile79.php
[77] => /var/www/backend/app/TestFile8.php
[78] => /var/www/backend/app/TestFile80.php
[79] => /var/www/backend/app/TestFile81.php
[80] => /var/www/backend/app/TestFile82.php
[81] => /var/www/backend/app/TestFile83.php
[82] => /var/www/backend/app/TestFile84.php
[83] => /var/www/backend/app/TestFile85.php
[84] => /var/www/backend/app/TestFile86.php
[85] => /var/www/backend/app/TestFile87.php
[86] => /var/www/backend/app/TestFile88.php
[87] => /var/www/backend/app/TestFile89.php
[88] => /var/www/backend/app/TestFile9.php
[89] => /var/www/backend/app/TestFile90.php
[90] => /var/www/backend/app/TestFile91.php
[91] => /var/www/backend/app/TestFile92.php
[92] => /var/www/backend/app/TestFile93.php
[93] => /var/www/backend/app/TestFile94.php
[94] => /var/www/backend/app/TestFile95.php
[95] => /var/www/backend/app/TestFile96.php
[96] => /var/www/backend/app/TestFile97.php
[97] => /var/www/backend/app/TestFile98.php
[98] => /var/www/backend/app/TestFile99.php
)
TestFile1.php
TestFile10.php
TestFile11.php
TestFile12.php
TestFile13.php
TestFile14.php
TestFile15.php
TestFile16.php
TestFile17.php
TestFile18.php
TestFile19.php
TestFile2.php
TestFile20.php
TestFile21.php
TestFile22.php
TestFile23.php
TestFile24.php
TestFile25.php
TestFile26.php
TestFile27.php
TestFile28.php
TestFile29.php
TestFile3.php
TestFile30.php
TestFile31.php
TestFile32.php
TestFile33.php
TestFile34.php
TestFile35.php
TestFile36.php
TestFile37.php
TestFile38.php
TestFile39.php
TestFile4.php
TestFile40.php
TestFile41.php
TestFile42.php
TestFile43.php
TestFile44.php
TestFile45.php
TestFile46.php
TestFile47.php
TestFile48.php
TestFile49.php
TestFile5.php
TestFile50.php
TestFile51.php
TestFile52.php
TestFile53.php
TestFile54.php
TestFile55.php
TestFile56.php
TestFile57.php
TestFile58.php
TestFile59.php
TestFile6.php
TestFile60.php
TestFile61.php
TestFile62.php
TestFile63.php
TestFile64.php
TestFile65.php
TestFile66.php
TestFile67.php
TestFile68.php
TestFile69.php
TestFile7.php
TestFile70.php
TestFile71.php
TestFile72.php
TestFile73.php
TestFile74.php
TestFile75.php
TestFile76.php
TestFile77.php
TestFile78.php
TestFile79.php
TestFile8.php
TestFile80.php
TestFile81.php
TestFile82.php
TestFile83.php
TestFile84.php
TestFile85.php
TestFile86.php
TestFile87.php
TestFile88.php
TestFile89.php
TestFile9.php
TestFile90.php
TestFile91.php
TestFile92.php
TestFile93.php
TestFile94.php
TestFile95.php
TestFile96.php
TestFile97.php
TestFile98.php
TestFile99.php
```
### PHP Version
PHP 8.1.7
### Operating System
Alpine Linux 3.16.0