3v4l.org

run code in 300+ PHP versions simultaneously
<?php $file = new SplTempFileObject(); for ($i = 0; $i < 100; $i++) { $file->fwrite("Foo $i\n"); } $file->seek(50); $nextBefore = []; while ($file->valid() && $file->key() <= 53) { $file->next(); $line = $file->current(); $nextBefore[$file->key()] = trim($line); } $file->seek(50); $nextAfter = []; while ($file->valid() && $file->key() <= 53) { $line = $file->current(); $nextAfter[$file->key()] = trim($line); $file->next(); } $file->seek(50); $fgets = []; while ($file->valid() && $file->key() <= 53) { $line = $file->fgets(); $fgets[$file->key()] = trim($line); } echo "-- Next Before --\n"; print_r($nextBefore) . PHP_EOL; echo "-- Next After --\n"; print_r($nextAfter) . PHP_EOL; echo "-- fgets --\n"; print_r($fgets) . PHP_EOL;
Output for 8.0.19 - 8.0.30, 8.1.6 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
-- Next Before -- Array ( [51] => Foo 50 [52] => Foo 51 [53] => Foo 52 [54] => Foo 53 ) -- Next After -- Array ( [50] => Foo 50 [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 ) -- fgets -- Array ( [51] => Foo 50 [52] => Foo 51 [53] => Foo 52 [54] => Foo 53 )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 -- Next Before -- Array ( [51] => Foo 50 [52] => Foo 51 [53] => Foo 52 [54] => Foo 53 ) -- Next After -- Array ( [50] => Foo 50 [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 ) -- fgets -- Array ( [51] => Foo 50 [52] => Foo 51 [53] => Foo 52 [54] => Foo 53 )
Output for 8.0.1 - 8.0.18, 8.1.0 - 8.1.5
-- Next Before -- Array ( [51] => Foo 50 [52] => Foo 51 [53] => Foo 52 [54] => Foo 53 ) -- Next After -- Array ( [50] => Foo 50 [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 ) -- fgets -- Array ( [50] => Foo 50 [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 [54] => Foo 54 )
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0
-- Next Before -- Array ( [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 [54] => Foo 54 ) -- Next After -- Array ( [50] => Foo 50 [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 ) -- fgets -- Array ( [51] => Foo 51 [52] => Foo 52 [53] => Foo 53 [54] => Foo 54 )

preferences:
162.82 ms | 402 KiB | 156 Q