Matrizes — Noções básicas

Um array em PHP não é um array comum — é uma superestrutura de dados que funciona como uma lista, um dicionário e um conjunto, tudo em um. Em PHP, os arrays são, sem dúvida, o tipo de dados que você mais usará.

1. O que é, na verdade, um array em PHP

Um array em PHP é, essencialmente, um mapa ordenado. Em linguagem simples: ele mapeia chaves para valores e lembra a ordem de inserção.

PHP
<?php
// Indexed array: keys are automatically assigned numbers (0, 1, 2, ...)
$fruits = ["apple", "banana", "orange"];

// Associative array: keys are strings you specify
$user = [
    "name" => "John",
    "age" => 25,
    "city" => "New York"
];
?>
Idioma Lista Dicionário Matriz PHP
Python list dict array faz as duas coisas
JavaScript Array Object / Map array faz as duas coisas
PHP array array Uma única estrutura cuida de tudo

2. Criação de matrizes

O PHP oferece duas sintaxes para criar matrizes. [] é a sintaxe moderna (PHP 5.4+) — use esta:

PHP
<?php
// Recommended syntax (PHP 5.4+)
$arr1 = [];                       // Empty array
$arr2 = [1, 2, 3];                // Indexed array
$arr3 = ["a" => 1, "b" => 2];     // Associative array

// Legacy syntax (for compatibility with older code)
$arr4 = array();
$arr5 = array(1, 2, 3);
$arr6 = array("a" => 1, "b" => 2);
?>
💡 Dica: [] tem 5 caracteres a menos que array(). Não há motivo para não usá-lo.


3. Acesso aos elementos de uma matriz

Use colchetes [] com uma tecla para ler ou modificar elementos:

PHP
<?php
$fruits = ["apple", "banana", "orange"];

echo $fruits[0];     // apple (index starts at 0)
echo $fruits[1];     // banana
echo $fruits[2];     // orange

$fruits[1] = "strawberry"; // Modify the second element
echo $fruits[1];     // strawberry

// Access associative arrays by key name
$user = ["name" => "John", "age" => 25];
echo $user["name"];  // John
$user["age"] = 26;   // Update the age
?>
⚠️ Atenção: Acessar uma chave que não existe aciona o Warning: Undefined array key. Adquira o hábito de verificar primeiro com isset() ou array_key_exists().


4. Adicionar e remover elementos

PHP
<?php
// === Adding Elements ===

$arr = [1, 2];
$arr[] = 3;          // Append to the end (the simplest syntax)
// $arr is now [1, 2, 3]

// Or use array_push (convenient when adding multiple)
array_push($arr, 4, 5);
// $arr is now [1, 2, 3, 4, 5]

// Add with a specific key
$arr["key"] = "value";

// === Removing Elements ===

unset($arr[2]);      // Remove the element with index 2
// $arr is now [1, 2, 4, 5, "key"=>"value"]

// array_pop: remove and return the last element
$last = array_pop($arr);

// array_shift: remove and return the first element
$first = array_shift($arr);
?>
💡 Dica: $arr[] = $val é a sintaxe de acréscimo mais comum no PHP — é mais concisa do que array_push() e um pouco mais rápida (sem a sobrecarga da chamada de função).


5. Percorrendo matrizes

PHP
<?php
$fruits = ["apple", "banana", "orange"];

// foreach for indexed arrays (value only)
foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}

// foreach for associative arrays (key and value)
$user = ["name" => "John", "age" => 25, "city" => "New York"];
foreach ($user as $key => $value) {
    echo "{$key}: {$value}<br>";
}
// name: John
// age: 25
// city: New York
?>

O foreach não se importa se o array é indexado ou associativo — ele percorre tudo com facilidade. Essa é a beleza do tipo de array unificado do PHP.

▶ Exemplo: Percorrendo matrizes aninhadas

PHP
<?php
// Real-world: iterating through a student grade sheet
// (mixing associative and indexed arrays)
$classroom = [
    ["name" => "Alice", "scores" => ["Math" => 85, "English" => 92]],
    ["name" => "Bob", "scores" => ["Math" => 78, "English" => 88]],
];
foreach ($classroom as $student) {
    $total = array_sum($student["scores"]);
    echo "{$student['name']} — Total: {$total}<br>";
}
?>
▶ Experimente

6. Depuração de matrizes

PHP
<?php
$user = [
    "name" => "John",
    "age" => 25,
    "skills" => ["PHP", "MySQL", "JavaScript"]
];

// var_dump: the most detailed debug output (includes type and length)
var_dump($user);
/*
array(3) {
  ["name"]=> string(4) "John"
  ["age"]=> int(25)
  ["skills"]=> array(3) { [0]=> ... }
}
*/

// print_r: a concise version (shows structure only, no types)
print_r($user);
/*
Array ( [name] => John [age] => 25 [skills] => Array (...) )
*/

// In HTML, use <pre> tags for cleaner output
echo "<pre>";
print_r($user);
echo "</pre>";
?>
💡 Dica: Precisa ver a estrutura completa do array durante o desenvolvimento? → var_dump(). Só quer dar uma olhada rápida no conteúdo? → echo "<pre>" + print_r(). Em produção? → Nunca exiba arrays diretamente; use o registro em log.


7. count() — Contagem de elementos

PHP
<?php
$fruits = ["apple", "banana", "orange"];
echo count($fruits);     // 3

$empty = [];
echo count($empty);      // 0

// sizeof is an alias for count — they're identical
echo sizeof($fruits);    // 3
?>

8. Verificando se uma chave ou um valor existe

PHP
<?php
$user = ["name" => "John", "age" => 25];

// Check if a key exists
var_dump(array_key_exists("name", $user));   // bool(true)
var_dump(array_key_exists("email", $user));  // bool(false)

// Check if a value exists
var_dump(in_array("John", $user));   // bool(true)
var_dump(in_array("Jane", $user));   // bool(false)
?>

▶ Exemplo: Padrões seguros de acesso a matrizes

PHP
<?php
// When you're not sure a key exists, check first
$user = ["name" => "John"];

// Safe pattern
if (isset($user["age"])) {
    echo $user["age"];
} else {
    echo "Age not set";
}

// Concise pattern: use ?? to provide a default
$age = $user["age"] ?? "Unknown";
echo $age;  // Unknown (because the "age" key doesn't exist)
?>
▶ Experimente
💡 Dica: isset() vs. ??: isset($arr['key']) verifica se a chave existe e se o valor não é nulo. array_key_exists('key', $arr) verifica apenas se a chave existe (retorna true mesmo que o valor seja nulo).

❓ Perguntas Frequentes

P: Qual é a diferença entre um array do PHP e um array do JavaScript? R: Um array do PHP é uma estrutura multifuncional (lista + dicionário combinados em um só). O Array do JavaScript é apenas uma lista; o Object/Map desempenha a função de dicionário. No PHP, [0=>"a", 1=>"b"] e ["x"=>1, "y"=>2] são exatamente do mesmo tipo.

P: Qual é a diferença entre matrizes indexadas e associativas? R: Para o PHP, não há essencialmente nenhuma diferença — ambas são mapas ordenados. As matrizes indexadas têm chaves inteiras atribuídas automaticamente, começando em 0. As matrizes associativas têm chaves de string personalizadas. É possível até mesmo misturá-las: ["a"=>1, 2=>3, 4=>5] é perfeitamente válido.

P: Por que meu foreach não modifica o array original? R: A menos que você use &$val para percorrer por referência, foreach ($arr as $val) fornece a $val uma cópia de cada elemento do array. Modificar $val não afeta o array original.

📖 Resumo

📝 Exercícios

  1. Crie um array indexado com 5 nomes de cidades, exiba uma lista numerada usando o foreach e, em seguida, use $arr[] para acrescentar mais uma cidade e exiba a lista novamente.
  2. Crie um array associativo de usuário com pelo menos 3 propriedades (nome, idade, e-mail, lista de habilidades) e, em seguida, use o foreach para exibi-lo como uma tabela HTML. Trate a lista de habilidades (que, por sua vez, é um array) de maneira especial — exiba-a como uma string separada por vírgulas.
  3. Escreva uma função safeGet($arr, $key, $default) que recupere com segurança um valor de uma matriz por meio de uma chave, retornando o valor padrão caso a chave não exista.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%