(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.
since: '8.4',message: 'this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()',| 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 | El uso de una clave no entera en un SplFixedArray ahora lanza un TypeError en lugar de una RuntimeException. |
| 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);
// Los dos bloques siguientes lanzan una RuntimeException: Index invalid or out of range (Índice inválido o fuera de rango)
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";
}
// A partir de PHP 8.1.0, el uso de una clave no entera lanza un TypeError.
// Antes de PHP 8.1.0, se lanzaba una RuntimeException en su lugar.
try {
var_dump($array["non-numeric"]);
} catch(TypeError $e) {
echo "TypeError: ".$e->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 TypeError: Illegal offset type
Nota:
Antes de PHP 8.1.0, acceder a un SplFixedArray con una clave no entera lanzaba una RuntimeException en lugar de un TypeError.