Sunteți pe pagina 1din 6

EXEMPLOS DE USO DOS ARRAYS E MATRIZES NO PHP

Um exemplo rpido para se usar matriz em PHP


< ?php
$a = array();
$a[0][0] = 30;
$a[0][1] = 60;
$a[1][0] = 70;
$a[1][1] = 52;
// Crie uma matriz (2x2) de nmeros e depois imprima apenas os nmeros entre 50 e 60.
for ($i=0; $i<= 1; $i++)
for ($j=0; $j<= 1; $j++)
if ($a[$i][$j] >=50 and $a[$i][$j] < = 70)
echo $a[$i][$j]."
";
//Crie uma matriz (2x2) de nmeros e imprima a mdia dos nmeros.
echo "Mdia
";
$m = 0;
for ($i=0; $i< = 1; $i++)
for ($j=0; $j<= 1; $j++)
$m += $a[$i][$j];
echo $m/4;

Os arrays, tambm conhecidos como matrizes, so posies de memria sequencialmente


armazenadas.

Acessados por um nico identificador (nome do array) cada posio pode ser acessada por um
indicador, numrico ou texto. Como dito, arrays so posies de memria, ou seja, umavarivel de
memria. Portanto um array nada mais que um tipo de varivel. O array sempre deve ser
inicializado, e para fazer isso basta utilizar a funo array.

<?php
$meuArray = array();
?>
O cdigo acima indica ao PHP que a varivel acima um array. Vejamos pra que usar um
array.Veja o seguinte cdigo:

<?php
$nota1 = 10;
$nota2 = 5;
$nota3 = 7;
$nota4 = 7;
$nota5 = 3;
echo 'A nota 1 ' . $nota1 . '<br>';
echo 'A nota 2 ' . $nota2 . '<br>';
echo 'A nota 3 ' . $nota3 . '<br>';
echo 'A nota 4 ' . $nota4 . '<br>';
echo 'A nota 5 ' . $nota5 . '<br>';
?>
O cdigo acima armazena os valores de cinco notas eapresenta depois. Para fazer isso com array
poderemos fazer da seguinte forma:

<?php
$nota = array();
$nota[1] = 10;
$nota[2] = 5;
$nota[3] = 7;
$nota[4] = 7;
$nota[5] = 3;

echo 'A nota 1 ' . $nota[1] . '<br>';


echo 'A nota 2 ' . $nota[2] . '<br>';
echo 'A nota 3 ' . $nota[3] . '<br>';
echo 'A nota 4 ' . $nota[4] . '<br>';
echo 'A nota 5 ' . $nota[5] . '<br>';
?>
Se voc testar o cdigo acima ver que a execuo ser o mesmo do anterior, porm, agora temos
uma nica variel $nota que possui 5 posies, ou seja, um array de 5 posies.
Quando fazemos $nota = array() criamos a varivel com 5 posies. Depois preenchemos cada posio
com um nmero entre colchetes logo aps o nome da varivel. Esse nmero o ndice do array. O
ndice identifica a posio do array que est o valor que ns queremos acessar. Para acessar o valor
basta informar o nome da varivel seguido de colchetes e com o ndice desejado dentro dos colchetes.

Qual a vantagem de usar um array ao invs de variveis separadas? Veja que no primeiro cdigo
precisamos de 5 instrues echo para mostrar todas as notas. No segundo, tambm utilizamos 5
instrues, porm, o ideal diminuir essas instrues. Veja como:

<?php
$nota = array();
$nota[1] = 10;
$nota[2] = 5;
$nota[3] = 7;
$nota[4] = 7;
$nota[5] = 3;

for ( $indice = 1 ; $indice <= 5 ; $indice++ ) {


echo 'A nota ' . $indice . ' ' . $nota[$indice] . '<br>';
}
?>
Notou a diferena? Utilizamos um for para iniciar o nosso $indice com 1 e somar com 1 a cada volta do
lao enquanto o $indice <= 5. Tambm colocamos o $indice entre colchetes. Isso diz ao PHP que o
ndice da varivel $notas ser indicada na varivel $indice. Portanto, para voc enteder, na primeira
volta a varivel $indice vale 1, imprimindo o indice 1 da $nota ($nota[1]). Na segunda volta a $variavel
$indice valer 2, que seria o mesmo que $nota[2], e assim por diante. Dessa forma foi possvel
economizar vrias linhas no mesmo?

ndice string

O ndice de um array pode ser uma string tambm. Veja:

<?php
$pessoa = array();
$pessoa['nome'] = 'Edgar Ferreira da Silva' ;
$pessoa['idade'] = 23;
$pessoa['sexo'] = 'masculino';

echo 'Meu nome ' . $pessoa['nome'] . '. Sou do sexo ' . $pessoa['sexo'] . ' e
tenho ' . $pessoa['idade'] . ' anos.';
?>
O cdigo acima uma array normal, a nica diferena que seu ndice formado por strings. A nica
regra que o ndice seja uma string ( que esteja dentro de aspas, simples ou dupla, ou que seja uma
varivel que contenha uma string ). Digo isso porque tem muitas pessoas que utilizam os indices como
string, mas sem utilizar aspas. Funcionar at funciona, mas apenas em alguns casos. Portanto, sempre
utilize aspas.

Inicializando

Outra forma de guardar os valores no array passando o contedo na inicializao. Veja:

<?php
$nota = array( 10, 5, 7, 7, 3 );
for ( $indice = 0 ; $indice < 5 ; $indice++ ) {
echo 'A nota ' . $indice . ' ' . $nota[$indice] . '<br>';
}
?>
O cdigo acima apresenta um resultado parecido como os primeiros cdigos apresentados no comeo.
O que mudou?

A primeira grande mudana que ele ficou mais enxuto no armazenamento dos valores na varivel,
pois, estamos passando os valores na criao da varivel com a funo array().

Outra mudana que percebemos que a nota no comea mais do 1 e sim do 0. O que ocasionou uma
mudana na inicializao e no teste do for tambm. Porqu?

Quando armazenamos um valor em um array e no informamos o ndice, o PHP pega o maior valor
inteiro j utilizado no ndice do array e soma 1. Como estamos inicializando nosso array, o primeiro
ndice ser 0. Par o prximo valor que for adicionado no array ser adicionado 1 ao ndice.

Para iniciar o array com o ndice 1 e mesmo assim escrever um cdigo enxuto basta informar o ndice
na criao do array. Veja:

<?php
$nota = array( 1 => 10, 2 => 5, 3 => 7, 4 => 7, 5 => 3 );
for ( $indice = 1 ; $indice <= 5 ; $indice++ ) {
echo 'A nota ' . $indice . ' ' . $nota[$indice] . '<br>';
}
?>
A chave, ou ndice de cada valor pode ser indicado na criao do array seguindo a seguinte regra:
indice => valor.

Lembra que eu disse que quando adicionamos um valor ao array e no informamos o ndice o PHP
encontra o maior nmero inteiro e soma 1? Ento o cdigo acima pode ser reescrito da seguinte forma:

<?php
$nota = array( 1 => 10, 5, 7, 7, 3 );
for ( $indice = 1 ; $indice <= 5 ; $indice++ ) {
echo 'A nota ' . $indice . ' ' . $nota[$indice] . '<br>';
}
?>
Informando o ndice inteiro no primeiro valor, os prximos sero preenchidos automaticamente
somando 1.

O ndice do tipo string tambm pode ser informado na inicializao da varivel:

<?php
$pessoa = array('nome' => 'Edgar Ferreira da Silva', 'idade' => 23, 'sexo' =>
'masculino');

echo 'Meu nome ' . $pessoa['nome'] . '. Sou do sexo ' . $pessoa['sexo'] . ' e
tenho ' . $pessoa['idade'] . ' anos.';
?>
Outra forma que o PHP aceita de criao e alimentao de arrays omitindo o ndice. Veja:

<?php
$nota = array();
$nota[] = 10;
$nota[] = 5;
$nota[] = 7;
$nota[] = 7;
$nota[] = 3;

for ( $indice = 0 ; $indice < 5 ; $indice++ ) {


echo 'A nota ' . $indice . ' ' . $nota[$indice] . '<br>';
}
?>
Veja que o ndice no foi passado na atribuio dos valores. Isso diz ao PHP para ele gerenciar o ndice.
Portanto ele no primeiro valor atribui o ndice 0, e nos demais vai somando 1. Para comear do 1 basta
fazer o seguinte:

<?php
$nota = array();
$nota[1] = 10;
$nota[] = 5;
$nota[] = 7;
$nota[] = 7;
$nota[] = 3;

for ( $indice = 1 ; $indice <= 5 ; $indice++ ) {


echo 'A nota ' . $indice . ' ' . $nota[$indice] . '<br>';
}
?>
Informando o primeiro ndice, os prximos sero somados 1.

Uma forma de entender facilmente o que so arrays multimensonais pensar como uma tabela, com
linhas e colunas. Na primeira linha de nosso array, teremos vrios nomes, na segunda linha teremos vrias
idades referentes aos nomes, portanto podemos fazer assim:

<?php
/**
* Inicializao da varivel $lista indicando que um array, porm, u
nidimensional
*/
$lista = array();

/**
* Na primeira linha, vrios nomes, o que exige guardar como um array
*/
$lista[] = array('Maria', 'Carlos', 'Edgar');

/**
* Na segunda linha, vrias idades, o que exige guardar como um array
*/
$lista[] = array(50, 60, 23);

echo $lista[0][0]; //imprimindo a primeira linha e a primeira coluna


echo '<br />';

echo $lista[0][1]; //imprimindo a primeira linha e a segunda coluna


echo '<br />';

echo $lista[0][3]; //imprimindo a primeira linha e a terceira coluna


echo '<br />';

echo $lista[1][0]; //imprimindo a segunda linha e a primeira coluna


echo '<br />';

echo $lista[1][1]; //imprimindo a segunda linha e a segunda coluna


echo '<br />';

echo $lista[1][3]; //imprimindo a segunda linha e a terceira coluna


echo '<br />';

?>

Leia com ateno o cdigo acima. Foi criado um array, e cada linha recebeu outro array. Isso
pode ser pensado como uma tabela, pois s tem duas dimenses.

No existe limite para as dimenses de um array, porm, a medida em que se aumente as


dimenses de um array, fica mais difcil de represent-la graficamente.
Existem vrias formas de se criar um array multidimensionais, dinamicamente, como feito
anteriormente, ou seja, montando linha a linha, ou, na declarao da varivel.

<?php
$lista = array( array('Maria', 'Carlos', 'Edgar'), array(50, 60, 23) );
echo $lista[0][0]; //imprimindo a primeira linha e a primeira coluna
echo '<br />';

echo $lista[0][1]; //imprimindo a primeira linha e a segunda coluna


echo '<br />';

echo $lista[0][3]; //imprimindo a primeira linha e a terceira coluna


echo '<br />';

echo $lista[1][0]; //imprimindo a segunda linha e a primeira coluna


echo '<br />';

echo $lista[1][1]; //imprimindo a segunda linha e a segunda coluna


echo '<br />';

echo $lista[1][3]; //imprimindo a segunda linha e a terceira coluna


echo '<br />';
?>

O resultado o mesmo, um array de array. Porm, mais curto.

<?php
$cubo = array('Edgar' => array( 'ontem' => array(10, 11, 12),
'hoje' => array(15, 16, 17)),
'Carlos' => array( 'ontem' => array(21, 22, 55),
'hoje' => array(25, 35, 11)),
'Jos' => array( 'ontem' => array(99, 82, 75),
'hoje' => array(44, 15, 07)));

//imprimindo a segunda dezena do Jos de ontem.


echo $cubo['Jos']['ontem'][1];

//mudando a 3 dezena de hoje do Carlos


$cubo['Carlos']['hoje'][2] = 28;
?>

O cdigo acima ilustra o cenrio onde trs pessoas (Edgar, Carlos e Jos) que em dois dias
(ontem e hoje) escolheram 3 dezenas.

Perceba tambm que voc pode usar strings como indicadores de posio nos arrays
multidimensionais.