Introducción
PHP Manual
PHP Manual»Estructuras de datos»SplFixedArray

La clase SplFixedArray

(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.

class SplFixedArray implements IteratorAggregate, ArrayAccess, Countable, JsonSerializable {
/* Métodos */
public function __construct(int $size = 0)
public function count(): int
public function current(): mixed
public static function fromArray(array $array, bool $preserveKeys = true): SplFixedArray
public function getIterator(): Iterator
public function getSize(): int
public function jsonSerialize(): array
public function key(): int
public function next(): void
public function offsetExists(int $index): bool
public function offsetGet(int $index): mixed
public function offsetSet(int $index, mixed $value): void
public function offsetUnset(int $index): void
public function rewind(): void
public function __serialize(): array
public function setSize(int $size): true
public function toArray(): array
public function __unserialize(array $data): void
public function valid(): bool
#[\Deprecated(
    since: '8.4',
    message: 'this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()',
)]

public function __wakeup(): void
}
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.

Tabla de contenidos

To Top