| <<< Voltar | Avançar >>> |
8. Arrays
Array com índices numéricos
Array com índices
associativos
Arrays bidimensionais
Arrays multidimensionais
Classificando Arrays
Outras funções de processamento de arrays
Para criar um array use uma construção do tipo:
$cores = array('verde','amarelo','azul','branco');
Para acessar os elementos do array:
echo "A cor do céu é $cores[2]";
o primeiro elemento do array tem o índice zero, assim no nosso array de exemplo:
$cores[0] é verde $cores[1] é amarelo $cores[2] é azul $cores[3] é branco
Assim como as variáveis, os arrays são criados na primeira vez que você os utiliza. O nosso array exemplo poderia ser criado também assim:
$cores[0] = "verde"; $cores[1] = "amarelo"; $cores[2] = "azul"; $cores[3] = "branco";
a primeira linha cria o array e as outras acrescentam elementos.
Como o array tem índices numéricos, podemos acessar os elementos com um loop do tipo:
for($indice=0;$indice<4;$indice++) echo "$cores[$indice] ";
Também podemos usar um loop assim:
foreach ($cores as $cor) echo $cor.' ';
Array com índices associativos
O array associativo usa strings como índice. Para criar um array associativo você pode usar uma construçao do tipo:
$notas = array('joão'=>8,'maria'=>9,'josé'=>6);
Para acessar os elementos:
echo $notas['joão']; echo $notas['maria']; echo $notas['josé'];
O array associativo também pode ser criado assim:
$notas = array('joão'=>8);
$notas['maria'] = 9;
$notas['josé'] = 6;
A primeira linha cria o array e as outras acrescentam elementos.
Ainda podemos criar o array assim:
$notas ['joão'] = 8; $notas['maria'] = 9; $notas['josé'] = 6;
Para acessar os elementos de um array associativo devemos usar um loop assim:
foreach ($notas as $nota_aluno) echo $nota_aluno.' ';
observe, porém, que este loop só exibe os valores dos elementos e não seus índices. Para exibir também os índices devemos modificar o loop para:
foreach ($notas as $aluno => $nota) echo $aluno.' - '.$nota.'<br>';
Outra maneira seria:
while($elemento = each($notas))
{
echo $elemento['key'];
echo ' - ';
echo $elemento['value'];
echo '<br>';
}
No código acima, a variável $elemento é um
array.
Há, ainda, uma construção mais limpa. A função list() pode ser usada para dividir o array em vários valores:
list$($aluno,$nota) = each($notas);
Podemos usar o seguinte loop para acessar todo o array:
while(list$($aluno,$nota) = each($notas)) echo "$aluno - $nota<br>";
OBSERVAÇÃO: Se, ao usar each(), quisermos utilizar o array duas vezes, teremos que apontar novamente para o início do array usando a função reset().
reset($notas); while(list$($aluno,$nota) = each($notas)) echo "$aluno - $nota<br>";
| Código | Descrição | Quantidade |
| A4 | Papel A4 | 500 |
| CAN | Caneta esferográfica | 100 |
| BOR | Borracha | 50 |
Um array pode conter outro array. Isto nos permite criar arrays bidimensionais. Pense num array de duas dimensões como sendo uma matriz como a tabela mostrada acima com linhas e colunas. Cada linha representa um produto e cada coluna é um atributo ou campo do produto. Para expressarmos a tabela acima por meio de um array faríamos assim:
$produtos = array ( array('A4','Papel A4','500'),
array('CAN','Caneta esferográfica','100),
array('BOR','Borracha','50'));
Para exibir os elementos deste array podemos usar este código:
echo $produtos[0][0].' - '.$produtos[0][1].' -
'.$produtos[0][2].'<br>';
echo $produtos[1][0].' - '.$produtos[1][1].' -
'.$produtos[1][2].'<br>';
echo $produtos[2][0].' - '.$produtos[2][1].' -
'.$produtos[2][2].'<br>';
Podemos também usar dois loops for, um dentro do outro:
for($linha = 0;$linha < 3;$linha++)
{
for($coluna = 0;$coluna < 3;$coluna++)
{
echo "$produtos[$linha][$coluna] ";
}
} echo "<br>;
Você também pode usar nomes como índices, ou seja, usar arrays bidimensionais associativos:
$produtos = array (array(Codigo => 'A4',
Descricao => 'Papel A4',
Quantidade => '500'),
(array(Codigo => 'CAN',
Descricao => 'Caneta esferográcia',
Quantidade => '100'),
(array(Codigo => 'BOR',
Descricao => 'Borracha',
Quantidade => '50'),
Para acessar os elementos deste array bidimensional associativo, poderíamos fazer assim:
for($linha = 0;$linha < 3;$linha++)
{
echo "$produtos[$linha]['Codigo'] $produtos[$linha]['Descricao']
$produtos[$linha][Quantidade]<br>";
}
ou assim:
for($linha =0;$linha < 3;$linha++)
{
while(list($key,$value) = each($produtos[$linha]))
{
echo "$value ";
}
echo "<br>";
}
$produtos = array(array ( array('SEC1_A4','Papel A4','500'),
array('SEC1_CAN','Caneta','100),
array('SEC1_BOR','Borracha','50'),
),
array ( array('SEC2_A4','Papel A4','200'),
array('SEC2_CAN','Caneta','300),
array('SEC2_BOR','Borracha','150'),
),
array ( array('SEC3_A4','Papel A4','20'),
array('SEC3_CAN','Caneta','400),
array('SEC3_BOR','Borracha','250'),
)
);
Para acessar os elementos deste array:
for($secao = 0;$secao < 3;$secao++)
{
echo "Seção $secao<br>";
for($linha = 0;$linha < 3;$linha++)
{
for($coluna = 0;$coluna < 3;$coluna++)
{
echo "$produtos[$secao][$linha][$coluna] ";
}
echo "<br>";
}
}
sort($array); //classifica o array com índice numérico
classificando arrays associativos:
asort($array); // classifica por valores ksort($array); // classifica por chaves
classificando na ordem inversa:
rsort($array); arsort($array); krsort($array);
classificando arrays bidimensionais
$produtos = array ( array('A4','Papel A4','500'),
array('CAN','Caneta esferográfica','100),
array('BOR','Borracha','50'));
Para classificar o array acima pela segunda coluna do array use:
function compare($x, $y)
{
if($x[1] == $y[1])
return 0;
else if($x[1] < $y[1])
return -1;
else
return 1;
}
usort($produtos,'compare');
Se você quiser classificar pela primeira coluna basta substituir o índice de x e y, que é 1, por zero. Se quiser classificar pela segunda coluna substitua o índice por 2. A função usort() indica que usaremos uma função definida pelo usuário para a comparação, que no nosso caso é a função compare(). Outras funções disponíveis são:
uasort($array,'função'); uksort($array,'função');
Para classificar o array bidimensional na ordem inversa basta trocar os valore -1 e 1 do return na função definida pelo usuário.
Outras funções de processamento de array
shuffle($array); // mistura os elementos de um array
array_reverse($array); // retorna um array com os elementos na ordem
inversa
current($array); // retorna o elemento corrente
each($array); // retorna o par chave/valor do elemento corrente e
avança para o próximo elemento
end($array); // aponta para o último elemento
next($array); // aponta para o próximo elemento
pos($array); // retorna o elemento atual
prev($array); // aponta para o elemento anterior
reset($array); // aponta para o primeiro elemento
array_walk($array,'função'); // aplica a função a cada elemento
count($array); // retorna o número de elementos
sizeof($array); // retorna o número de elementos
file(arquivo); // retorna um array cujos elementos são as linhas do arquivo
Para ver a lista completa das funções relacionadas a
arrays vá em:
http://www.php.
net/manual/pt_BR/ref.array.php
| <<< Voltar | Avançar >>> |