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.