Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. SplFixedArray
  2. Adicionando elemento
  3. Quantidade de elementos
  4. Percorrendo elementos
  5. Removendo elemento
  6. Métodos SplFixedArray

A classe SplFixedArray representa uma estrutura de dados que proporciona funcionalidades de uma array que armazena valores inteiros. Utiliza menos memoria do que um vetor/array e seu tamanho precisa ser alterado manualmente.

O tipo SplFixedArray implementa as interfaces abaixo:

  1. IteratorAggregate
  2. Countable
  3. ArrayAccess
  4. JsonSerializable

Para utilizarmos o tipo SplFixedArray, declaramos uma instancia de sua classe como na sintaxe abaixo:

Sintaxe
$variavel = new SplFixedArray(int $size=0)
Onde
$size: tamanho ou quantidade de elemento do array
Exemplo 1
<?php
$sfa = new SplFixedArray(100);
?>
Saída
-

Após a instanciação de um SplFixedArray definindo seu número de elementos, esses tem espaço reservado para atribuir valores utilizando seus índices como argumentos para o indexador [].

Os elementos reservados e nao iniciados possuem o valor NULL atribuído a eles.

Sintaxe
$variavel_fixedarray[indice] = valor; //alteração

$variavel_fixedarray[indice]; //acesso 
Onde
indice: índice do elemento
Exemplo 2
<?php
$sfa = new SplFixedArray(3); //espaço reservado
$sfa[0]= 999;
echo $sfa[0],"\n";
?>
Saída
-

Para termos conhecimento do número de elementos contidos em um SplFixedArray, usamos o método count implementado a partir da interface countable.

Sintaxe
count(int $mode = COUNT_NORMAL): int
Onde
$mode: modo da contagem: COUNT_NORMAL ou COUNT_RECURSIVE
Retorno
Inteiro contendo o número de elementos
Exemplo 3
<?php
class Teste{
//corpo omitido
}
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

echo $sfa->count();
?>
Saída
3

Para percorrer os elementos de uma objeto SplFixedArray, podemos utilizar o comando de repetição foreach e recuperar os valores de índice e valor como no exemplo abaixo.

O comando foreach assim como outros comandos de repetição foram vistos em PHP: Comandos de Repetição.

Exemplo 4
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

foreach($sfa as $indice => $valor)
	echo $indice,':',$valor, "\n";
?>
Saída
0:999
1:888
2:888

Não é possível remover elementos em posições aleatórias em um SplFixedArray. Podemos utilizar o método setSize para "remover" os últimos elementos, redimensionando assim o tamanho do SplFixedArray.

Sintaxe
setSize(int $size): bool
Onde
$size: novo tamanho
Exemplo 5
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;
echo $sfa->count(),"\n";
$sfa->setSize(2);
echo $sfa->count(),"\n";
?>
Saída
3
2

A classe SplFixedArray fornece métodos para manipular seus dados. Abaixo, uma lista de todos os métodos dessa classe que podem ser acessado clicando em seus nomes.

Método Descrição
count Retorna número de elementos
current Retorna elemento atual
getIterator Cria um SplFixedArray a partir de um array
fromArray Cria um SplFixedArray a partir de um array
getSize Retorna tamanho
jsonSerialize -
key Retorno o índice do elemento atual
next Move iterador para próximo elemento
offsetExists Verificar se um elemento existe
offsetGet Recuperar o valor de um elemento
offsetSet Atualizar o valor de um elemento
offsetUnset Remove valor elemento contido
rewind Volta o iterador para o início
__serialize Serializa um SplFixedArray
setsize Redimensionar o tamanho de um SplFixedArray
toArray Retorna um array de elementos
__unserialize Deserializa um SplFixedArray
valid Verifica se contem mais elementos
__wakeup -

Com o método count podemos ter conhecimento de quantos elementos existem em uma SplFixedArray. Um valor é retornado informando o número de elementos.

Sintaxe
count(): int
Onde
-
Retorno
Inteiro contendo o número de elementos
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

echo $sfa->count();
?>
Saída
3

Utilizando o método current, podemos recuperar o elemento de um SplFixedArray na posição atual de seu iterador. Esse método não aceita argumentos.

Sintaxe
current(): mixed
Onde
-
Retorno
Elemento na posição atual do iterador
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

echo $sfa->current();
?>
Saída
999

Usando o método getIterator, podemos recuperar o iterador interno de um SplFixedArray para manipulação de seus elementos.

Sintaxe
getIterator(): Traversable
Onde
-
Retorno
Iterador do tipo Traversable
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

$it = $sfa->getIterator();
$it->next(); //1
echo $it->current(); //888
?>
Saída
888

Com o método fromArray podemos criar um SplFixedArray a partir de um array que é passado como argumento para esse método.

Sintaxe
static fromArray(array $array, bool $preserveKeys = true): SplFixedArray
Onde
$array: array com elementos
$preserveKeys: Booleano indicando se os índices utilizados no array devem ser preservados se possível.
Retorno
Um novo SplFixedArray contendo os elementos de $array
Exemplo
<?php
$array = array(1,2,3);
$sfa = new SplFixedArray(3);
$sfa2 = $sfa->fromArray($array);
var_dump($sfa2);
?>
Saída
object(SplFixedArray)#2 (3) {[0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
bool(false)

Utilizando o método getSize, podemos ter conhecimento de quantos elementos contém um SplFixedArray. Um valor é retornado informando o número de elementos.

Sintaxe
getSize(): int
Onde
-
Retorno
Inteiro contendo o número de elementos
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

echo $sfa->getSize();
?>
Saída
3

O objetivo do método key é retornar o índice de um elemento contido na posição atual do iterador de um SplFixedArray. O iterador não é incrementado.

Sintaxe
key(): mixed
Onde
-
Retorno
Índice do elemento atual
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

$it = $sfa->getIterator();
echo $it->key();
?>
Saída
0

O método next é utilizado para mover o iterador para o próximo elemento de uma SplFixedArray. Esse método não recebe argumentos e não possui valor de retorno.

Sintaxe
next(): void
Onde
-
Retorno
-
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

$it = $sfa->getIterator();
$it->next();
echo $it->current();
?>
Saída
888

Com o método offsetExists podemos verificar se um elemento possui valor associado a um determinado índice passado como argumento.

Sintaxe
offsetExists(object $object): bool
Onde
$object: índice para recuperar valor
Retorno
true(1) se valor existe, false(0) caso contrário
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

echo $sfa->offsetExists(1);
?>
Saída
1

Usando o método offsetGet podemos recuperar o valor de um elemento de um determinado índice passado como argumento.

Sintaxe
offsetGet(object $object ): mixed
Onde
$objeto: índice para recuperar valor
Retorno
Valor do elemento na posição $objeto
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

echo $sfa->offsetGet(0);
?>
Saída
999

O método offsetSet é utilizado para atualizar o valor de uma elemento de um determinado índice passado como argumento.

Sintaxe
offsetSet(mixed $object, mixed $value): void
Onde
$object:índice do elemento para alterar.
$value: valor para atualizar.
Retorno
-
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 888;

echo $sfa[0],"\n";
$sfa->offsetSet(0,555);
echo $sfa[0],"\n";
?>
Saída
999
555

Com método offsetUnset, podemos remover um determinado elemento contido em um SplFixedArray baseado em um índice que é passado como argumento.

Sintaxe
offsetUnset(object $object): void
Onde
$object: índice do elemento
Retorno
-
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

echo $sfa[0],"\n";
$sfa->offsetUnset(0);
var_dump($sfa);
?>
Saída
999
object(SplFixedArray)#1 (3) {
  [0]=>
  NULL
  [1]=>
  int(888)
  [2]=>
  int(777)
}

Utilizando o método rewind, podemos retornar a posição do iterador para o primeiro elemento de um SplFixedArray. Esse método não recebe argumentos e não tem retorno.

Sintaxe
public rewind(): void
Onde
-
Retorno
-
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

$it = $sfa->getIterator();
$it->next(); //888
$it->next(); //777

echo $it->key(),"\n";
$it->rewind();
echo $it->key();
?>
Saída
2
0

O método __serialize converte uma SplFixedArray para uma string em um formato legível contendo seus elementos com índice e valor separados por (;).

Sintaxe
public __serialize(): ?string
Onde
-
Retorno
String com elementos serializados.
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

$str = $sfa->__serialize();
var_dump($str);
?>
Saída
array(3) {
  [0]=>
  int(999)
  [1]=>
  int(888)
  [2]=>
  int(777)
}

Usando o método setSize, podemos redimensionar o tamanho de um SplFixedArray. Esse método recebe um inteiro como argumento.

Sintaxe
setSize(int $size): bool
Onde
$size: inteiro contendo o novo tamanho do SplFixedArray.
Retorno
true se sucesso, false caso contrário
Exemplo
<?php
$sfa = new SplFixedArray(4);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;
$sfa[3]= 555;

echo $sfa->getSize(),"\n";
$sfa->setSize(3);
echo $sfa->getSize();
?>
Saída
3

Com o método toArray, é possível converter um SplFixedArray para o tipos de dados derivado array/vetor. Esse método não recebe argumentos.

Sintaxe
toArray(): array
Onde
-
Retorno
array contendo os elementos de um SplFixedArray
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;
$array = $sfa->toArray();
var_dump($array);
?>
Saída
array(3) {  [0]=>  int(999)  [1]=>  int(888)  [2]=>  int(777)}

O método unserialize converte uma string serializada pelo método serialize de volta para um objeto SplFixedArray.

Sintaxe
__unserialize(string $data): void
Onde
$data: string com elementos serializados no formato utilizado pelo método serialize.
Retorno
SplFixedArray convertida a partir de $data
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

$str = $sfa->__serialize();
var_dump($str);
$sfa->__unserialize($str);
var_dump($str);
?>
Saída
array(3) {
  [0]=>
  int(999)
  [1]=>
  int(888)
  [2]=>
  int(777)
}
array(3) {
  [0]=>
  int(999)
  [1]=>
  int(888)
  [2]=>
  int(777)
}

Com o método valid podemos verificar se a posição atual do iterador é válida para utilizar métodos current ou next, por exemplo. Esse método não possui argumento e retorno.

Sintaxe
valid(): bool
Onde
-
Retorno
true(1) se posição do iterador é válida, false(0) caso contrário.
Exemplo
<?php
$sfa = new SplFixedArray(3);
$sfa[0]= 999;
$sfa[1]= 888;
$sfa[2]= 777;

$it = $sfa->getIterator();
$it->next(); //888
echo $it->valid();
?>
Saída
1
  1. 25/08/2025 - revisão 4 - Ajustes: pontuais, objetivos e sintaxes
  2. 20/09/2024 - revisão 3 - Correção de 'Onde' em 'Iniciando/Alterando', Ex. 'offsetUnset'/'setSize'; outros ajustes
  3. 03/09/2024 - revisão 2 - Correção em links de métodos setSize e toArray
  4. 06/02/2024 - revisão 1 - correção em navegação, descrição de métodos e erros gramaticais
  5. 20/09/2023 - versão inicial