A classe SplFixedArray

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Introdução

A classe SplFixedArray fornece as principais funcionalidades de um array. A principal diferença entre um SplFixedArray e um array PHP normal é que o SplFixedArray deve ser redimensionado manualmente e permite apenas inteiros dentro do intervalo como índices. A vantagem é que ele usa menos memória do que um array padrão.

Resumo da classe

class SplFixedArray implements IteratorAggregate, ArrayAccess, Countable, JsonSerializable {
/* Métodos */
public __construct(int $size = 0)
public count(): int
public current(): mixed
public static fromArray(array $array, bool $preserveKeys = true): SplFixedArray
public getSize(): int
public key(): int
public next(): void
public offsetExists(int $index): bool
public offsetGet(int $index): mixed
public offsetSet(int $index, mixed $value): void
public offsetUnset(int $index): void
public rewind(): void
public __serialize(): array
public setSize(int $size): bool
public toArray(): array
public __unserialize(array $data): void
public valid(): bool
public __wakeup(): void
}

Registro de Alterações

Versão Descrição
8.2.0 Os métodos mágicos SplFixedArray::__serialize() e SplFixedArray::__unserialize() foram adicionados à classe SplFixedArray.
8.1.0 SplFixedArray implementa JsonSerializable agora.
8.0.0 SplFixedArray implementa IteratorAggregate agora. Anteriormente, implementava Iterator.

Exemplos

Example #1 Exemplo de uso de SplFixedArray

<?php
// Inicialize o array com um comprimento fixo
$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"

// Aumenta o tamanho do array para 10
$array->setSize(10);

$array[9] = "asdf";

// Reduz o array para um tamanho de 2
$array->setSize(2);

// As seguintes linhas lançam uma RuntimeException: Índice inválido ou fora do intervalo
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";
}
?>

O exemplo acima produzirá:

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

Table of Contents