Arrays em PHP

Arrays em PHP são bem parecidos com variáveis – pequenos trechos de código capazes de receber valores – porém, uma variável só recebe um único valor, enquanto que os arrays podem receber milhares de valores que serão identificados por chaves. (Saiba mais)

Criando arrays em PHP

Uma das maneiras mais comuns para criar um array em PHP é utilizando o construtor array, veja um exemplo:

<?php
$nome_do_array = array("Valor 1", "Valor 2", "Valor 3");
?>

O construtor “array” receberá os valores do seu array entre parênteses, separados por vírgula.

Você também pode criar um array colocando chaves em frente ao nome da variável que será o array em si:

<?php
$nome_do_array[] = 'Valor 1';
$nome_do_array[] = 'Valor 2';
$nome_do_array[] = 'Valor 3';
?>

Todos os trechos de códigos acima são válidos e geram as chaves do array automaticamente. Neste caso, as chaves serão numéricas começando pelo número zero (0), sendo incrementadas a cada novo item.

Você também pode definir a chave que desejar de várias maneiras diferentes.

Veja exemplos com chaves definidas por mim:

<?php
$nome_do_array = array(
	"Chave_1" => "Valor 1", 
	"Chave_2" => "Valor 2", 
	"Chave_3" => "Valor 3"
);
?>

Agora, ao invés de chaves numéricas geradas automaticamente (0, 1, 2 …), crio uma chave com o nome que eu desejo. No exemplo acima, a “Chave_1” tem o valor “Valor 1”, a “Chave_2” tem o valor “Valor 2” e a “Chave_3” tem o valor “Valor 3”.

As chaves podem ser do tipo string ou integer; o valor pode ser qualquer coisa (assim como as variáveis).

Acessando valores de arrays em PHP

Se você tentou acessar o valor de um array com o comando echo, provavelmente viu uma mensagem:

Notice: Array to string conversion in E:ProgramasEasyPHPdatalocalwebcursosphpaula_6index.php on line 8
Array

Isso acontece porque você não especificou a chave que deseja saber o valor para que o interpretador do PHP entenda o que exibir.

Vamos supor que eu tenha o array abaixo:

<?php
$nome_do_array = array(
	"Valor 1", 
	"Valor 2", 
	"Chave_3" => "Valor 3"
);
?>

Ao olhar para o código já podemos distinguir onde cada valor está. Temos duas chaves sendo geradas automaticamente, então podemos presumir que o primeiro valor tem a chave 0 e o segundo a chave 1. Decidi criar uma chave que eu mesmo especifiquei para o terceiro valor, estão a terceira chave não é 3 e sim “Chave_3”.

Se eu quiser exibir qualquer um dos valores na tela do navegador, basta utilizar o comando echo com o nome da chave entre colchetes, exemplo:

echo $nome_do_array[0]; // Exibe: Valor 1
echo $nome_do_array[1]; // Exibe: Valor 2
echo $nome_do_array["Chave_3"]; // Exibe: Valor 3

Nota: Lembre-se que para chaves do tipo string precisamos utilizar aspas, o mesmo não é necessários para integers.

Para arrays com chaves geradas automaticamente, elas sempre serão criadas de maneira crescente, ou seja, 0, 1, 2, e assim por diante. Com isso, se você criar uma chave numérica manualmente (como no trecho de código abaixo), as próximas chaves geradas automaticamente continuarão a ser incrementadas a partir do valor que você especificou por último.

<?php
$nome_do_array[10] = "Valor teste";
$nome_do_array[] = "11";
$nome_do_array[] = "12";
$nome_do_array[] = "13";
?>

No trecho de código acima criei um array com a chave numérica 10 (dez), as próximas chaves serão incrementadas a partir desse valor.

Analisando arrays em PHP

É extremamente fácil ver todas as chaves e todos os valores de arrays em PHP, basta utilizar o comando print_r. Veja um exemplo:

<?php
// O array
$nome_do_array = array( "Valor 1", "Valor 2", "Valor 3", "Valor 4" );

// Exibindo o array de forma legível
print_r( $nome_do_array );

/**
 * Resultado
 * Array
 * (
 *     [0] => Valor 1
 *     [1] => Valor 2
 *     [2] => Valor 3
 *     [3] => Valor 4
 * )
 */
?>

A parte:

Array
(
    [0] => Valor 1
    [1] => Valor 2
    [2] => Valor 3
    [3] => Valor 4
)

Aparecerá na tela do seu navegador exibindo todas as chaves e seu respectivo valor.

Alterando o valor de uma chave do array

Alterar o valor de uma chave já definida no array é bastante simples, você só precisa especificar a chave entre colchetes depois do nome do array e configurar o novo valor, exemplo:

<?php
// O array
$nome_do_array = array( "Valor 1", "Valor 2", "Valor 3", "Valor 4" );

// Exibe a chave 0
echo $nome_do_array[0]; // Exibe: Valor 1

// Muda a chave 0
$nome_do_array[0] = 'Outro valor';

// Exibe a chave 0
echo $nome_do_array[0]; // Exibe: Outro valor
?>

No trecho de código acima, exibi o valor da chave 0 (gerada automaticamente) de um array, depois modifiquei o valor da chave e a exibi novamente.

Se a chave que eu estiver tentando alterar não existir, ela será criada no seu array; se o array não existir, ele será criado.

Tudo simples assim!

Removendo uma chave de arrays em PHP

Talvez você queira apagar uma chave de determinado array em PHP, isso pode ser atingido com a função unset.

<?php
// O array
$nome_do_array = array( "Valor 1", "Valor 2", "Valor 3", "Valor 4" );

// Exibe a chave 0
echo $nome_do_array[0]; // Exibe: Valor 1

// Apaga a chave 0
unset( $nome_do_array[0] );

// Exibe um erro falando que a chave não existe
echo $nome_do_array[0];
?>

No trecho de código acima, exibi o valor da chave 0 (gerada automaticamente) de um array, depois apaguei o valor da chave e tentei exibir seu valor novamente. Como resultado, obtive um erro falando que a chave 0 não existe.

Notice: Undefined offset: 0 in E:ProgramasEasyPHPdatalocalwebcursosphpaula_6index.php on line 12

Isso acontece por eu ter apagado a chave 0 com a função unset do PHP.

Você também pode apagar todas as chaves de um array, deixando ele vazio, com o comando de estrutura de controle foreach (ainda vamos falar sobre isso posteriormente). Este comando é utilizado para percorrer todos os itens de um array e executar uma ação em cada um dos seus valores ou chaves.

<?php
// O array
$nome_do_array = array( "Valor 1", "Valor 2", "Valor 3", "Valor 4" );

// Apaga todos os item do seu array
foreach ( $nome_do_array as $chave => $valor ) {
    unset( $nome_do_array[$chave] );
}

// Exibe Array() - Um array vazio
print_r($nome_do_array);
?>

Agora meu array ainda existe, porém, suas chaves e valores foram todos apagados.

Contando arrays em PHP

Vai chegar um momento em que você vai precisar saber quantos itens existem no seu array, para isso, utilize a função count do PHP. Por exemplo:

<?php
// O array
$nome_do_array = array( "Valor 1", "Valor 2", "Valor 3", "Chave_4" => "Valor 4" );

// Exibe o número de itens do array: 4
echo count( $nome_do_array );
?>

Percorrendo arrays em PHP

Existem várias maneiras de percorrer um array em PHP, mas vamos exibir apenas o comando foreach. Veja o exemplo:

<?php
// O array
$frutas = array( "Laranja", "Banana", "Uva" );

// Percorre o array exibindo os valores
foreach ( $frutas as $fruta ) {
	// Exibe uma frase e concatena o valor do array
	echo 'Gosto de <b>' . $fruta . '</b> no café da manhã <br />';
}
?>

O trecho acima exibirá:

Gosto de Laranja no café da manhã
Gosto de Banana no café da manhã
Gosto de Uva no café da manhã

Isso porque o comando foreach pode ser trabalhado de duas maneira:

  1. Gerando apenas os valores do array, exemplo foreach ( $array as $valor ) { ação }
  2. Gerando as chaves e seus valores, exemplo foreach ( $array as $chave => $valor ) { ação }

Ambos os métodos são laços que passarão por cada item do array, permitindo uma ação para cada chave e seu valor.

Arrays multidimensionais em PHP

Todos os exemplos exibidos anteriormente são arrays unidimensionais, porém, também existem array multidimensionais, que nada mais são do que arrays dentro de arrays.

Lembra que eu disse que tudo pode ser o valor de uma chave de um array? Então, um array também pode ser o valor de uma chave de outro array. Veja o exemplo:

<?php
// Cria um array multidimensional
$um_array = array(
	"paises" => array(
		'Brasil',
		'USA'
	),
	"anos" => array(
		'2013',
		'2014'
	),
	array(
		'Um array com chave automática'
	),
	"Ops, sou só um valor."
);

// Mostra os dados do array
print_r( $um_array );
?>

O trecho acima cria um array com outros arrays dentro dele (multidimensional) e exibe sua estrutura:

Array
(
    [paises] => Array
        (
            [0] => Brasil
            [1] => USA
        )

    [anos] => Array
        (
            [0] => 2013
            [1] => 2014
        )

    [0] => Array
        (
            [0] => Um array com chave automática
        )

    [1] => Ops, sou só um valor.
)

Para acessar o valor de uma chave, você precisa colocar sua hierarquia entre colchetes após o nome do array. Exemplo:

<?php
// Cria um array multidimensional
$um_array = array(
	"paises" => array(
		'Brasil',
		'USA'
	),
	"anos" => array(
		'2013',
		'2014'
	),
	array(
		'Um array com chave automática'
	),
	"Ops, sou só um valor."
);

// Mostra os dados do array
echo $um_array['paises'][1]; // Exibe: USA
echo $um_array['anos'][0]; // Exibe: 2013
echo $um_array[0][0]; // Exibe: Um array com chave automática
echo $um_array[1]; // Exibe: Ops, sou só um valor.
?>

O restante é a mesma coisa, apenas o modo de acesso aos valores das chaves é um pouco mais complexo.

Concluindo

Arrays são bastante utilizados em qualquer script em PHP, portanto, tente ler as partes de código acima e entender como criar, acessar, modificar e percorrer um array. Faça testes em seu servidor local, e não deixe de perguntar nos comentários em caso de dúvidas.

Também existem milhares de funções para reordenar e manipular arrays de várias maneiras diferentes, não deixe de conferir:

O site do PHP também é repleto de informações sobre os arrays.

Vídeo aula

Link do vídeo: https://www.youtube.com/watch?v=JPuZpIOuNL4

Aulas anteriores

Caso queira acessar os links para aulas anteriores:

Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.