3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Collection { public $fixedArray; public function __construct(SplFixedArray $splFixedArray) { $this->fixedArray = $splFixedArray; } public function getSum() { $sum = 0; $arr = $this->fixedArray; foreach ($arr as $item) { $sum += $item; } return $sum; } } $spl = SplFixedArray::fromArray([0, 1, 2]); $collection = new Collection($spl); $collArr = $collection->fixedArray; echo 'Test #1'.PHP_EOL; $i = 0; foreach ($collArr as $item) { echo '-- iteration: ' . $i . ', item: ' . $item .', sum: ' . $collection->getSum() . PHP_EOL; $i++; } echo 'Expected 3 iterations, executed ' . $i . PHP_EOL; echo PHP_EOL; echo 'Test #2'.PHP_EOL; $i = 0; // Note, unless we use $collection->getSum() inside the loop - it works as expected! foreach ($collArr as $item) { echo '-- iteration: ' . $i . ', item: ' . $item . PHP_EOL; $i++; } echo 'Expected 3 iterations, executed ' . $i . PHP_EOL;
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Test #1 -- iteration: 0, item: 0, sum: 3 -- iteration: 1, item: 1, sum: 3 -- iteration: 2, item: 2, sum: 3 Expected 3 iterations, executed 3 Test #2 -- iteration: 0, item: 0 -- iteration: 1, item: 1 -- iteration: 2, item: 2 Expected 3 iterations, executed 3
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 Test #1 -- iteration: 0, item: 0, sum: 3 -- iteration: 1, item: 1, sum: 3 -- iteration: 2, item: 2, sum: 3 Expected 3 iterations, executed 3 Test #2 -- iteration: 0, item: 0 -- iteration: 1, item: 1 -- iteration: 2, item: 2 Expected 3 iterations, executed 3
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
Test #1 -- iteration: 0, item: 0, sum: 3 Expected 3 iterations, executed 1 Test #2 -- iteration: 0, item: 0 -- iteration: 1, item: 1 -- iteration: 2, item: 2 Expected 3 iterations, executed 3

preferences:
179.24 ms | 402 KiB | 182 Q