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

  1. Vetor associativo
  2. Declaração
  3. Acessando/alteração elementos
  4. Quantidade de elementos
  5. Percorrendo vetores
  6. Copiando vetores
  7. Comparando vetores
  8. Ordenando vetores
  9. Parâmetro, argumento e retorno
  10. Filtrar elementos
  11. Manipular vetor associativo
  12. unpacking com list

Um array associativo em PHP é um tipo de array indexado em que seus elementos são armazenados na forma chave-valor. Esse tipo de vetor não aceita elementos com chaves repetidas.

Tab. 1: Abstração vetor associativo
chave0 chave1 chave2 chave3 chave4
valor0 valor1 valor2 valor3 valor4

As operações mais complexas que envolvem vetores associativos, devem ser realizadas utilizando as funções nativas em PHP Básico: Funções de Array.

Um vetor associativo em PHP é declarado utilizando como base a sintaxe mostrada abaixo:

Sintaxe: Iniciado
$variavel = array( chave1 => valor1, chave2 => valor2, chaveN = >valorN);
Onde
chave1..N: uma chave para identificação
valor1..N: valor associado a chave
=>: Operador de associação

Os valores associados às chaves podem ser os tipos de dados básicos como float, int , string e também tipos de dados mais complexos com outros arrays e objetos.

Para chaves, são utilizados os tipos básicos de dados com string, int, float e double. Valores booleanos, classes, arrays e outros tipos complexos ou referenciados não são aceitos.

Exemplo 1
<?php
  $array1 = array(
    "chave1" => 1,
    "chave2" => 2,
    "chave3" => 3,
    "chave4" => 4);
?>
Saída
-

O acesso básico aos elementos de um array/vetor do tipo associativo em PHP é feito informando uma determinada chave para o indexador [], semelhante ao que foi feito em vetores indexados.

Sintaxe
$vetor_associativo[chave];
Exemplo 2
<?php
    $array1 = array(
    "chave1" => 1,
    "chave2" => 2,
  );
  echo $array1["chave1"],"\n";
?>
Saída
1string1.99

A alteração de uma elemento de um array associativo é feita acessando um elemento por sua chave que é passada como argumento para o indexador [], e atribuindo um novo valor utilizando o operador (=).

Sintaxe
$vetor_associativo[chave] = novo_valor;
Exemplo 3
<?php
  $array1 = array(
    "chave1" => 1,
    "chave2" => 2,
  );
  echo $array1["chave1"],"\n";
  $array1["chave1"]=2;
  echo $array1["chave1"];
?>
Saída
1
2

Com a função count podemos descobrir o número de elementos contidos em um vetor associativo. Esse método retorna um inteiro.

Sintaxe
count(array $value, int $mode = COUNT_NORMAL): int
Onde
$value: array/vetor para contagem de elementos
$mode: modo da contagem. COUNT_NORMAL para array, COUNT_RECURSIVE para array multidimensional
Exemplo 4
<?php
  $array1 = array("chave1" => 1,"chave2" => 2);
  echo count($array1);
?>
Saída
2

Para percorrermos uma vetor associativo utilizando comandos de repetição, precisamos utilizar a função array_keys que retorna um vetor com todas chaves. Com isso, esse array de chaves é usado para nos auxiliar a acessar um valor associado à sua chave.

Sintaxe
array_key(array $array): array
Exemplo 5
<?php
  $array = array(
    "chave1" => 1,
    "chave2" => 2,
  );

  $chaves = array_keys($array); //array de chaves
  
  for($i = 0 ; $i < 2 ; $i++){
      echo $chaves[$i],"-"; //chave
      echo $array[$chaves[$i]],"\n"; //valor associado a chave
  }   
?>
Saída
chave1-1
chave2-2

Podemos utilizar também o comando foreach como na sintaxe abaixo:

Sintaxe
foreach($array as $chave => $valor){
//corpo
}
Onde
$array: array associativo
$chave: variável para armazenar a chave do elemento
$valor: variável para armazenar o valor associado a $valor
Exemplo 6
<?php
$array = array(
    "chave1" => 1,
    "chave2" => 2,
  );
  foreach($array as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
?>
Saída
chave1-1
chave2-2

Na linguagem PHP, podemos facilmente copiar um vetor utilizando apenas o operador (=) como pode ser visto na sintaxe abaixo.

Sintaxe
$vetor_destino = $vetor_origem;
Exemplo 7
<?php
  $array1 = array("chave1" => 1,"chave2" => 2);
  $array2 = $array1;
  
  $array1["chave1"] = 999;
  
  foreach($array1 as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
  
  foreach($array2 as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
?>
Saída
chave1-999
chave2-2
chave1-1
chave2-2

Existem outras formas para copiar o conteúdo de um array, porém serão vistas em futuras atualizações.

Podemos facilmente concatenar dois ou mais vetores associativos utilizando o operador (...). Assim, em conjunto vetores são concatenados formando um novo vetor.

Sintaxe
$vetor_destino = $vetor_1 + $vetor_2;

Caso um dos vetores possuam elementos com chaves repetidas, esses serão excluídos no momento da concatenação.

Exemplo 8
<?php
  $array1 = array("chave1" => 1,"chave2" => 2);
  $array2 = array("chave1" => 1,"chave3" => 3,"chave4" => 4);
  
  $array3 = $array1 + $array2;
  
  foreach($array3 as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
?>
Saída
chave1-1
chave2-2
chave3-3
chave4-4

Outra forma de concatenar dois vetores associativos é utilizando a função array_merge que recebe um ou mais vetores associativos como argumento:

Sintaxe
array_merge(array ...$arrays): array
Exemplo 9
<?php
  $array1 = array("chave1" => 1,"chave2" => 2);
  $array2 = array("chave1" => 1,"chave3" => 3,"chave4" => 4);
  
  $array3 = array_merge($array1,$array2);
  
  foreach($array3 as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
?>
Saída
chave1-1
chave2-2
chave3-3
chave4-4

Para comparar dois vetores, utilizamos os operadores relacionais (==),(===),(!=),(<>) e (!==) vistos em PHP Básico: Operadores.

Sintaxe
$vetor1 operador $vetor2
Exemplo 10
<?php
  $array1 = array("chave1" => 1,"chave2" => 2);
  $array2 = array("chave3" => 3,"chave4" => 4);
  $array3 = array("chave1" => 1,"chave2" => 2);
  
  echo $array1 != $array2,"\n";
  echo $array1 == $array3,"\n";
?>
Saída
1
1

De forma básica, para ordenarmos vetores em PHP, utilizamos as funções asort e arsort. A primeiro ordena os elementos de um vetor de forma ascendente a segunda de forma descendente.

Sintaxe
arsort(array &$array, int $flags = SORT_REGULAR): true

asort(array &$array, int $flags = SORT_REGULAR): true
Onde
$flags: flag de comparação
  SORT_REGULAR: normal(padrão)
  SORT_NUMERIC: numérica
  SORT_STRING: strings
  SORT_NATURAL: ordem natural
  SORT_FLAG_CASE: SORT_STRING e SORT_NATURAL
Exemplo 11
<?php
  $array1 = array("chave1" => 1,"chave3" => 3,"chave4" => 4, "chave2" => 2);

  asort($array1); //ascendente
  
  foreach($array1 as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
  
  echo "\n";
  
  arsort($array1); //descendente
  
  foreach($array1 as $chave => $valor){
    echo $chave,"-",$valor,"\n";
  }
?>
Saída
chave1-1
chave2-2
chave3-3
chave4-4

chave4-4
chave3-3
chave2-2
chave1-1
  1. 21/08/2025 - revisão 3 - Ajustes: pontuais, sintaxes, Ex. 2 e targets de links
  2. 22/09/2024 - revisão 2 - Correção em Tab. 1, sintaxes 'Acessando/alterando'; ajustes gramaticais pontuais; outros ajustes
  3. 05/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  4. 20/09/2023 - versão inicial