<?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 two blocks throw a RuntimeException: Index invalid or out of range
try {
var_dump($array[-1]);
} catch(RuntimeException $e) {
echo "RuntimeException: ".$e->getMessage()."\n";
}
try {
var_dump($array[5]);
} catch(RuntimeException $e) {
echo "RuntimeException: ".$e->getMessage()."\n";
}
// As of PHP 8.1.0, using a non-integer key throws a TypeError.
// Prior to PHP 8.1.0, a RuntimeException was thrown instead.
try {
var_dump($array["non-numeric"]);
} catch(TypeError $e) {
echo "TypeError: ".$e->getMessage()."\n";
}
?>
The above example will output:
NULL
int(2)
string(3) "foo"
RuntimeException: Index invalid or out of range
RuntimeException: Index invalid or out of range
TypeError: Illegal offset type