[php-src] Issue #8947: iterator_to_array did not return all my files

From: 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

« previous php.bugs (#241877) next »