<?php
// Initialize the array with a fixed length
$array = new SplFixedArray(5);
$array[1] = 2;
$array[4] = "foo";
var_dump($array[0]); // NULL
var_dump($array[1]); // int(2)
var_dump($array["4"]); // string(3) "foo"
// Increase the size of the array to 10
$array->setSize(10);
$array[9] = "asdf";
// Shrink the array to a size of 2
$array->setSize(2);
// The following lines throw a RuntimeException: Index invalid or out of range
try {
var_dump($array["non-numeric"]);
} catch(RuntimeException $re) {
echo "RuntimeException: ".$re->getMessage()."\n";
}
try {
var_dump($array[-1]);
} catch(RuntimeException $re) {
echo "RuntimeException: ".$re->getMessage()."\n";
}
try {
var_dump($array[5]);
} catch(RuntimeException $re) {
echo "RuntimeException: ".$re->getMessage()."\n";
}
NULL
int(2)
string(3) "foo"
Fatal error: Uncaught TypeError: Cannot access offset of type string on SplFixedArray in /in/quJSm:23
Stack trace:
#0 {main}
thrown in /in/quJSm on line 23
Process exited with code 255.
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
NULL
int(2)
string(3) "foo"
Fatal error: Uncaught TypeError: Cannot access offset of type string on SplFixedArray in /in/quJSm:23
Stack trace:
#0 {main}
thrown in /in/quJSm on line 23
Process exited with code 255.
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18
NULL
int(2)
string(3) "foo"
Fatal error: Uncaught TypeError: Illegal offset type in /in/quJSm:23
Stack trace:
#0 {main}
thrown in /in/quJSm on line 23
Process exited with code 255.
NULL
int(2)
string(3) "foo"
RuntimeException: Index invalid or out of range
RuntimeException: Index invalid or out of range
RuntimeException: Index invalid or out of range