(PHP 5 >= 5.3.0, PHP 7, PHP 8)
la clase SplFixedArray proporciona la funcionalidad principal de un array. La principal diferencia entre SplFixedArray y un array normal de PHP es que la clase SplFixedArray es de longitud fija y sólo permite enteros dentro del rango de índices. La ventaja es que usa menos memoría que un array estándar.
| Versión | Descripción |
|---|---|
| 8.4.0 | Los accesos fuera de los límites en SplFixedArray ahora lanzan excepciones de tipo OutOfBoundsException en lugar de RuntimeException. Dado que OutOfBoundsException es una clase hija de RuntimeException, no se produce ningún cambio de comportamiento al intentar capturar esas excepciones. |
| 8.2.0 | Se han añadido los métodos mágicos SplFixedArray::__serialize() y SplFixedArray::__unserialize() a SplFixedArray. |
| 8.1.0 | SplFixedArray ahora implementa JsonSerializable. |
| 8.0.0 | SplFixedArray ahora implementa IteratorAggregate. Anteriormente, se implementaba Iterator en su lugar. |
Ejemplo #1 Ejemplo de uso SplFixedArray
<?php
// Inicializar el array con una longitud fija
$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"
// Aumentar el tamaño del array a 10
$array->setSize(10);
$array[9] = "asdf";
// Reducir el tamaño de un array a 2
$array->setSize(2);
// Las siguientes líneas lanzan una RuntimeException: Index invalid or out of range (Índice inválido o fuera de rango)
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";
}
?>El ejemplo anterior mostrará:
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