Digite aqui o resumo do post
No post passado, sobre arrays unidimensionais, foi explicado os conceitos básicos sobre arrays. E até agora, v]os vimos apenas com uma dimensão, para melhor ilustrar, podemos falar que vimos um array como uma lista ou fila única. Mas as matrizes são muito úteis.
Relembrando, para criar um array unidimensional podemos fazer:
<?php
$lista = array('Maria', 'Carlos', 'Edgar');
for ($i = 0; $i < 3; $i++) {
echo 'Posição: ' . $i . ' Nome: ' . $lista[$i] . '<br />';
}
?>
O código acima irá exibir uma listagem de nomes bem simples.
Imagine um cenário onde além do nome, gostaria de exibir a idade referente as pessoas. Já que os nomes estão armazenados em um array, não seria interessante armazenar a idade em um array também?
<?php
$lista = array('Maria', 'Carlos', 'Edgar');
$idade = array(50, 60, 23);
for ($i = 0; $i < 3; $i++) {
echo 'Posição: ' . $i . ' Nome: ' . $lista[$i] . ' Idade: ' . $idade[$i] .'<br />';
}
?>
Bom, ficou bem claro que as idades estão diretamente ligadas aos nomes. Porém ainda estamos utilizando dois arrays unidimensionais.
Uma forma de entender facilmente o que são arrays multimensonais é pensar como uma tabela, com linhas e colunas. Na primeira linha de nosso array, teremos vários nomes, na segunda linha teremos várias idades referentes aos nomes, portanto podemos fazer assim:
<?php
/**
* Inicialização da variável $lista indicando que �� um array, por��m, unidimensional
*/
$lista = array();
/**
* Na primeira linha, vários nomes, o que exige guardar como um array
*/
$lista[] = array('Maria', 'Carlos', 'Edgar');
/**
* Na segunda linha, várias 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 atenção o código acima. Foi criado um array, e cada linha recebeu outro array. Isso pode ser pensado como uma tabela, pois só tem duas dimensões.
Não existe limite para as dimensões de um array, porém, a medida em que se aumente as dimensões de um array, fica mais difícil de representá-la graficamente.
Existem várias formas de se criar um array multidimensionais, dinamicamente, como feito anteriormente, ou seja, montando linha a linha, ou, na declaração da variável.
<?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. Porém, 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 código acima ilustra o cenário onde três pessoas (Edgar, Carlos e José) que em dois dias (ontem e hoje) escolheram 3 dezenas.
Perceba também que você pode usar strings como indicadores de posição nos arrays multidimensionais.
O próximo post será sobre manipuplação e movimentação de array.
terça-feira, 19 de agosto de 2008
Arrays - Parte II (Matrizes Multidimensionais)
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário