0

Arrays - parte 1

criado por Roberto Bertó em 03/12/2000 12:00pm
Antes de começar, seria interessante ler um pouco sobre os Arrays no Manual, em http://www.php.net/manual/pt_BR/ref.array.php



I) O que é um array
Um array não passa de uma matriz. Lembra das aulas de matemática onde a matriz A 3x3 tinha índices de linha e coluna? Pois é mais ou menos igual, uma vez que existem índices em arrays assim como na matemática.

Resumindo: são variáveis de múltiplo nível que pode conter mais que uma varíavel dentro.



II) Como criar um array
Pode ser criado basicamente de duas formas.

a) Declara-se o array com a funcao array():
<?php 
$salada_de_frutas = array();
?>

[Mais sobre array(): http://www.php.net/manual/pt_BR/function.array.php]

b) Dá-se um valor a uma variável com indice, ou seja:
<?php 
$salada_de_frutas[0] = "maça";
?>

Porém se pode comecar com a função array já com algum valor dentro:
<?php 
$salada_de_frutas = array("maça","uva","pêra");
?>

Praticamente se cria um array criar um array vazio quando se quiser preencher ele depois com um array_push() [http://www.php.net/manual/pt_BR/function.array-push.php]



III) Como destruir um array
Para apagar um array voce usa a funcao unset() [http://www.php.net/manual/pt_BR/function.unset.php] que pode tanto destruir todo o array ou apenas uma varíavel de um único nível.

IV) Os tipos de índices
Um índice é o identificador da varíavel dentro de um array. Assim como numa matriz:

[0 1 2 3]
[4 5 6 7]

O número 6 têm o índice definido pela Álgebra Linear de (i,j) = (2,4), caso a matriz fosse um array:

<?php

$matriz = array(
    array(0, 1, 2, 3),
    array(4, 5, 6, 7)
);

?>

Então o número 7 estaria na segunda linha e na quarta coluna, ou seja, 1,3 (começando-se do zero deve-se diminuir um).

Só para adiantar um pouco, para pegar o valor 7 se utiliza:
<?php
print $matriz[1][3];
?>

Explicado o que é um índice, existem dois tipos deles: ordenado e o associativo

No PERL, inclusive eles não eram tão parecidos quanto é no PHP, por isso, para quem vem do PERL, esqueça toda aquela história de @ordenado e %hash (associativo), pois agora no PHP usamos SEMPRE o mesmo identificador para arrays: o cifrão/"dólar"/"ésse-com-tracinho" ($).


a) No ordenado, o índice é baseado em números (int) que começa do ZERO. Atenção, comeca do ZERO e não do UM, como podem pensar quem é mais acostumado com matemática do que com programação.

b) Os associativos não são numeros, mas sim carácteres alfa-numéricos, ou seja, uma string.

Por exemplos fica mais fácil de demonstrar:

<?php
$chamada = array(
   "alberto",
   "bianca",
   "carlos",
   "maira",
   "ricardo"
);
?>

Temos um array do tipo ordenado pois não estamos associando nada.

Veja como pegar estes valores:

<?php
print $chamada[0]; #--> retorna alberto
print $chamada[3]; #--> retorna maira
print $chamada[4]; #--> retorna ricardo
?>

Lembre-se que comeca do ZERO.

Agora vamos criar algumas associações:
<?php
$chamada = array(
   "aluno1"  => "alberto",
   "aluno3"  => "bianca",
   "aluno5"  => "carlos",
   "aluno24" => "maira"  /* -> note que não precisa de vírgula no último */
);
?>

E o output:

<?php
print $chamada["aluno1"]; # --> retorna alberto
print $chamada["aluno5"]; # --> retorna maira
print $chamada[0]; # --> retorna alberto
print $chamada[3]; # --> retorna maira
?>

Temos dois meios para invocar o array. O associativo (índice e valor) e o ordenado (número e valor). Perceba que uma associacao tem um => entre eles.

Outro meio de fazer uma associacao é:

<?php
$chamada["aluno1"] = "alberto";
$chamada["aluno24"] = "maira";
?>

Funcionará da mesma forma. Veja que essas associações são válidas e uma não exclui a outra.

Mais uma da matematica, para finalizar: lembra das funcoes? f(x) = x + 1. Lembra de Dominio e Imagem? O que é Dominio e o que é Imagem? O dominio é o x e a Imagem é o y. Um domínio só pode ter uma imagem porém uma imagem pode ter 0, 1 ou mais domínios. Compare agora o x como se fosse p índice do array (o "aluno1" é o índice) e o y é um valor ("alberto").

Portanto, isso pode co-existir:
$chamada["aluno1"] = "alberto";
$chamada["aluno24"] = "alberto";

Mas isso não pode:
$chamada["aluno1"] = "alberto";
$chamada["aluno1"] = "maira";

Por quê? Porque senão o valor de $chamada["aluno1"] vai ser o último valor dado, ou seja, "maira", pois se acaba de sobscrever uma variável.

Mais informações:
http://www.php.net/manual/pt_BR/ref.array.php
http://www.php.net/manual/pt_BR/function.array.php
http://www.php.net/manual/pt_BR/function.array-push.php
http://www.php.net/manual/pt_BR/function.unset.php


------------------------------------------------------
Roberto Bertó é desenvolvedor da Desenvolve
http://desenvolve.com.br

Comentários:

Mostrando 1 - 2 de 2 comentários
Cléver Anjos disse:
Um pequeno comentario sobre arrays é que podem possuir valores de tipos diferentes em cada posição do array.
26/01/2004 8:21am (~20 anos atrás)

Como eu faço para enviar um array preenchido por um link de pagina:

teste.php?array=array[]
07/08/2002 11:41am (~22 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)