Arrays no PHP (Matriz)

Os arrays, ou então chamada de “matrizes” é um conjunto de dados ordenados. Servem para armazenar e recuperar qualquer tipo de dados, incluindo números, valores booleanos, strings, objetos e até mesmo outros arrays. Eles permitem o uso de chaves integer ou string.

O próprio PHP possue diversas funções que você pode manipular os arrays, possibilitando você a fazer praticamente tudo com eles, e mais um pouco.

Vejamos a sintaxe de um array:

array(  chave =>  valor
     , ...
     )
// chave pode ser tanto "string" ou um "integer"
// valor pode ser qualquer coisa

Exemplo: Valores das chaves como string

<?php
$dados = array('nome' => "Diego", 'sobrenome' => "Macêdo", 'funcao' => "Desenvolvedor Web", 'dia' => 20, 'mes' => 06);

print_r($dados);
?>

Exemplo: Valores das chaves como integer

<?php
$dados = array(1 => "Diego", 2 => "Macêdo", 3 => "Desenvolvedor Web", 4 => 20, 5 => 06);

print_r($dados);
?>

Por padrão, os valores das chaves são integer, ou seja, caso você crie um array, insira seus valores e não defina suas chaves, o array irá utilizar números inteiros de forma auto-incrementável. Veja o exemplo abaixo:

<?php
$numeros = array(1, 2, 3, 4, 5);
print_r($numeros);
?>

Caso você queira inserir mais um valor dentro do array que já foi criado anteriormente, você pode utilizar da seguinte forma:

<?php
$numeros = array(1, 2, 3, 4, 5);
print_r($numeros); // Irá imprimir os valores 1, 2, 3, 4, 5 da matriz com os seus respectivos índices

$numeros[] = 10; // Acrescenta o número 10 no array
$numeros[] = 18; // Acrescenta o número 18 no array
print_r($numeros); // Irá imprimir os valores 1, 2, 3, 4, 5, 10, 18 da matriz com os seus respectivos índices
?>

Agora que entendemos melhor sobre os índices, vou demonstrar como fazer algumas coisas com nossos arrays. Por exemplo, vamos criar um array e botar para exibir no documento um valor específico, chamando pelo seu índice.

Recuperando valor pelo seu índice

<?php
$dados = array('nome' => "Diego", 'sobrenome' => "Macêdo", 'funcao' => "Desenvolvedor Web", 'dia' => 20, 'mes' => 06);

echo "Nome: ".$dados['nome']." ".$dados['sobrenome']."<br />";
echo "Função: ".$dados['funcao']."<br />";
echo "Data: ".$dados['dia']."/".$dados['mes']."<br />";
?>

Sempre utilize aspas simples para determinar qual é o índice que você está querendo retornar. Caso você não utilize, irá funcionar, mas está ERRADO.

Aí você deve estar se perguntando “Mas se está errado, por que ele está exibindo o valor do índice mesmo assim?”. A resposta para isso está neste exemplo abaixo:

<?php
// Vamos ver todos os erros
error_reporting(E_ALL);

$arr = array('fruta' => 'maçã', 'legume' => 'cenoura');

// Correto
print $arr['fruta'];  // maçã
print $arr['legume']; // cenoura

// Errado. Isto funciona mas lança um erro PHP do
// nível E_NOTICE porque é utilizada uma constante indefinida (fruta)
//
// Repare: Quando utiliza-se a constrante indefinida fruta, o PHP assume 'fruta'
print $arr[fruta];    // maçã

// Agora vamos definir uma constante para demonstrar o que pode acontecer. Nós
// vamos assimilar o valor 'legume' para a constante de nome fruta
define('fruta', 'legume');

// Observe a diferenca agora
print $arr['fruit'];  // maçã
print $arr[fruit];    // cenoura

// O exemplo seguinte é normal dentro de uma string. Constantes não são
// observadas dentro de strings e por isso nenhum E-NOTICE não é lançado aqui
print "Olá $arr[fruta]";      // Olá maçã

// Com uma exceção: chaves envolvendo arrays dentro de strings
// ativam a checagem de constantes, como em
print "Olá {$arr[fruta]}";    // Hello cenoura
print "Olá {$arr['fruta']}";  // Hello maçã

// E isso não funciona, resultando em um erro de interpretação do tipo:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
// Isso se aplica ao uso de superglobais em strings
print "Olá $arr['fruta']";
print "Olá $_GET['foo']";

// Nesse caso, use concatenacao
print "Olá " . $arr['fruta']; // Olá maçã
?>

Funções de manipulação de Arrays no PHP

  • array_change_key_case — Modifica todas as chaves em um array
  • array_chunk — Divide um array em pedaços
  • array_combine — Cria um array usando um array para chaves e outro para valores
  • array_count_values — Conta as frequências de cada valor de um array
  • array_diff_assoc — Computa a diferença entre arrays com checagem adicional de índice
  • array_diff_key — Registra a diferença entre arrays usando chaves para comparação
  • array_diff_uassoc — Computa a diferença entre arrays com checagem adicional de índice que é feita por uma função de callback fornecida pelo usuário
  • array_diff_ukey — Computa a diferença de arrays usando uma função callback na comparação de chaves
  • array_diff — Analisa as diferenças entre arrays
  • array_fill_keys — Preenche um array com valores, especificando chaves
  • array_fill — Preenche um array com valores
  • array_filter — Filtra os elementos da array usando uma função de callback
  • array_flip — Inverte as relações entre chaves e valores
  • array_intersect_assoc — Computa a interseção de arrays com uma adicional verificação de índice
  • array_intersect_key — Computa a interseção de array comparando pelas chaves
  • array_intersect_uassoc — Computa a interseção de arrays com checagem de índice adicional, compara índices por uma função de callback
  • array_intersect_ukey — Computa a interseção de arrays usando uma função de callback nas chaves para comparação
  • array_intersect — Calcula a interseção entre arrays
  • array_key_exists — Checa se uma chave ou índice existe em um array
  • array_keys — Retorna todas as chaves de um array
  • array_map — Aplica uma função em todos os elementos dos arrays dados
  • array_merge_recursive — Funde dois ou mais arrays recursivamente
  • array_merge — Funde um ou mais arrays
  • array_multisort — Ordena múltiplos arrays ou arrays multidimensionais
  • array_pad — Expande um array para um certo comprimento utilizando um determinado valor
  • array_pop — Retira um elemento do final do array
  • array_product — Calcula o produto dos valores de um array
  • array_push — Adiciona um ou mais elementos no final de um array
  • array_rand — Retorna um ou mais elementos aleatórios de um array
  • array_reduce — Reduz um array para um único valor através de um processo iterativo utilizando uma função
  • array_replace_recursive — Replaces elements from passed arrays into the first array recursively
  • array_replace — Replaces elements from passed arrays into the first array
  • array_reverse — Retorna um array com os elementos na ordem inversa
  • array_search — Procura por um valor em um array e retorna sua chave correspondente caso seja encontrado
  • array_shift — Retira o primeiro elemento de um array
  • array_slice — Extrai uma parcela de um array
  • array_splice — Remove uma parcela do array e substitui com outros elementos
  • array_sum — Calcula a soma dos elementos de um array
  • array_udiff_assoc — Computa a diferença entre arrays com checagem adicional de índice, compara dados por uma função de callback
  • array_udiff_uassoc — Computa a diferença entre arrays com checagem adicional de índice, compara dados e índices por uma função de callback
  • array_udiff — Computa a diferença de arrays usando uma função de callback para comparação dos dados
  • array_uintersect_assoc — Computa a interseção de arrays com checagem adicional de índice, compara os dados utilizando uma função de callback
  • array_uintersect_uassoc — Computa a interseção de arrays com checagem adicional de índice, compara os dados e os índices utilizando funções de callback
  • array_uintersect — Computa a interseção de array, comparando dados com uma função callback
  • array_unique — Remove o valores duplicados de um array
  • array_unshift — Adiciona um ou mais elementos no início de um array
  • array_values — Retorna todos os valores de um array
  • array_walk_recursive — Aplica um função do usuário recursivamente para cada membro de um array
  • array_walk — Aplica uma determinada funcão em cada elemento de um array
  • array — Cria um array
  • arsort — Ordena um array em ordem descrescente mantendo a associação entre índices e valores
  • asort — Ordena um array mantendo a associação entre índices e valores
  • compact — Cria um array contendo variáveis e seus valores
  • count — Conta o número de elementos de uma variável, ou propriedades de um objeto
  • current — Retorna o elemento corrente em um array
  • each — Retorna o par chave/valor corrente de um array e avança o seu cursor
  • end — Faz o ponteiro interno de um array apontar para o seu último elemento
  • extract — Importa variáveis para a tabela de símbolos a partir de um array
  • in_array — Checa se um valor existe em um array
  • key — Retorna uma chave de um array
  • krsort — Ordena um array pelas chaves em ordem descrescente
  • ksort — Ordena um array pelas chaves
  • list — Cria variáveis como se fossem arrays
  • natcasesort — Ordena um array utilizando o algoritmo da “ordem natural” sem diferenciar maiúsculas e minúsculas
  • natsort — Ordena um array utilizando o algoritmo da “ordem natural”
  • next — Avança o ponteiro interno de um array
  • pos — Sinônimo de current
  • prev — Retrocede o ponteiro interno de um array
  • range — Cria um array contendo uma faixa de elementos
  • reset — Faz o ponteiro interno de um array apontar para o seu primeiro elemento
  • rsort — Ordena um array em ordem descrescente
  • shuffle — Mistura os elementos de um array
  • sizeof — Sinônimo de count
  • sort — Ordena um array
  • uasort — Ordena um array utilizando uma função de comparação definida pelo usuário e mantendo as associações entre chaves e valores
  • uksort — Ordena um array pelas chaves utilizando uma função de comparação definida pelo usuário.
  • usort — Ordena um array pelos valores utilizando uma função de comparação definida pelo usuário

Espero que tenham gostado e façam um bom uso do que você aprendeu aqui.

Qualquer dúvida, postem um comentário ou então entre em contato comigo através da página de “Contato”. Grande abraço e bons estudos!

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado.