Objetivos
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:
- IteratorAggregate
- Countable
- ArrayAccess
- 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
-
Iniciando/Alterando elemento
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
Histórico de atualizações
- 25/08/2025 - revisão 4 - Ajustes: pontuais, objetivos e sintaxes
- 20/09/2024 - revisão 3 - Correção de 'Onde' em 'Iniciando/Alterando', Ex. 'offsetUnset'/'setSize'; outros ajustes
- 03/09/2024 - revisão 2 - Correção em links de métodos setSize e toArray
- 06/02/2024 - revisão 1 - correção em navegação, descrição de métodos e erros gramaticais
- 20/09/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.