3. Estruturas de dados
compostas
Problema: faça um script que calcule a
média ponderada de 300 alunos e imprimar
o total de aprovados, reprovados, maior e
menor nota.
17/12/12 Desenvolvimento Web I 3/46
4. Estruturas de dados
compostas
Problema: faça um script que calcule a
média ponderada de 300 alunos e imprimar
o total de aprovados, reprovados, maior e
menor nota.
De quantas variáveis precisamos ?
17/12/12 Desenvolvimento Web I 4/46
5. Estruturas de dados
compostas
● Aplicações que necessitam de muitas
variáveis
● Ajudam a organizar o código
17/12/12 Desenvolvimento Web I 5/46
6. Estruturas de dados
compostas
Homogênea Heterogênea
17/12/12 Desenvolvimento Web I 6/46
7. Vetor
● Estrutura composta unidimensional
● Estrutura homogênea
● Faz uso de uma variável indexada
● Cada posição posição da variável é
chamada de índice
17/12/12 Desenvolvimento Web I 7/46
9. Vetor
● Para acessar usamos o identificador da
variável seguido do índice do qual
queremos o valor
17/12/12 Desenvolvimento Web I 9/46
10. Exemplo
itens
0 1 2 3 4
caixa sapato camisa meia gravata
itens[1] → sapato
itens[3] → meia
17/12/12 Desenvolvimento Web I 10/46
11. Matriz
● Estrutura composta multidimensional
● Problemas que precisam de mais de uma
dimensão em uma estrutura
● As posições têm um índice para cada
dimensão
17/12/12 Desenvolvimento Web I 11/46
12. Matriz
1,1 1,2 … 1,n
2,1 2,2 … 2,n
… … … …
m,1 m,2 … m,n
17/12/12 Desenvolvimento Web I 12/46
13. Exemplo
itens
1,1 1,2
sapato camisa
2,1 2,2
meia caixa
itens[1][1] → sapato
itens[2][1] → meia
17/12/12 Desenvolvimento Web I 13/46
14. Tipo array
● É uma lista de valores armazenados na
memória, os quais podem ser de tipos
diferentes
● Cada valor é relacionado a uma chave
17/12/12 Desenvolvimento Web I 14/46
15. Criando um array
array([chave =>] valor, … )
$cores = array('vermelho','verde','azul');
ou
$cores = array(0=>'vermelho',1=>'verde',2=>'azul');
ou
$cores[] = 'vermelho';
$cores[] = 'verde';
$cores[] = 'azul';
17/12/12 Desenvolvimento Web I 15/46
17. Registro
● Além dos índices do tipo inteiro, índices
literais também são suportados
17/12/12 Desenvolvimento Web I 17/46
18. Exemplo
$pessoa['nome'] = 'Maria da Silva';
$pessoa['rua'] = 'São João';
$pessoa['bairro'] = 'Cidade Alta';
$pessoa['cidade'] = 'Porto Alegre';
//para acessar basta indicar a chave
echo $pessoa['nome'];
echo $pessoa['rua'];
echo $pessoa['bairro'];
echo $pessoa['cidade'];
17/12/12 Desenvolvimento Web I 18/46
19. foreach
● É um laço de repetição para iterações em
arrays ou matrizes
● FOR simplificado que decompõe um vetor
ou matriz em cada um de seus elementos
por meio da cláusula AS
17/12/12 Desenvolvimento Web I 19/46
20. foreach
foreach(expressão_array as $valor)
{
instruções
}
17/12/12 Desenvolvimento Web I 20/46
21. Exemplo
$cores = array('vermelho','verde','azul');
foreach($nomes as $valor)
{
echo "$valor <br />";
}
17/12/12 Desenvolvimento Web I 21/46
22. Iterações
$nomes = array('maria','joão','carlos','josé');
for($i=0;$i<4;$i++)
{
echo "$nomes[$i] <br />";
}
foreach($nomes as $valor)
FOR X FOREACH
{
echo "$valor <br />"; ?
}
17/12/12 Desenvolvimento Web I 22/46
23. Array multidimensionais
● Ou matrizes são array nos quais algumas
de suas posições podem conter outros
arrays
17/12/12 Desenvolvimento Web I 23/46
24. Exemplo
$carros = array(
'Palio'=>array(
'cor'=>'preto',
'potencia'=>'1.0',
'opcionais'=>'Ar Cond.'),
'Corsa'=>array(
'cor'=>'branco',
'potencia'=>'1.3',
'opcionais'=>'MP3'),
'Gol'=>array(
'cor'=>'cinza',
'potencia'=>'1.0',
'opcionais'=>'DVD'));
echo $carros['Corsa']['potencia'];
17/12/12 Desenvolvimento Web I 24/46
25. Exemplo
foreach($carros as $modelo=>$caracteristicas)
{
echo "=> modelo $modelo <br />";
foreach($caracteristicas as $caracteristica=>$valor)
{
echo "caracteristica $caracteristica => $valor <br />n";
}
}
17/12/12 Desenvolvimento Web I 25/46
26. Exercício
Modele e inicialize um registro que
contenha os seguintes dados nome,
matricula e curso. Imprima seu registro.
Ex.:
Nome => James Ross
Matricula => 681324
Curso => Redes de Computadores
17/12/12 Desenvolvimento Web I 26/46
27. Exercício
$cad = array(
'Nome'=>'James Ross',
'Matricula'=>681324,
'Curso'=>"Redes de Computadores");
foreach($cad as $aux=>$valor)
{
echo "$aux => $valor <br />";
}
17/12/12 Desenvolvimento Web I 27/46
28. Exercício
x x o
Faça uma representação
para o joga da velha
o x o
x o x
17/12/12 Desenvolvimento Web I 28/46
29. Exercício
$velha=array(
array('X','X','O'),
array('O','X','O'),
array('X','O','X'));
foreach($velha as $linha)
{
foreach($linha as $valor)
{
echo "$valor ";
}
echo "<br />";
}
17/12/12 Desenvolvimento Web I 29/46
30. Exercício
Faça um script para inverter um array
17/12/12 Desenvolvimento Web I 30/46
31. Exercício
$a=array(1,2,3,4,5,6,7,8,9);
print_r($a);
echo '<br />';
//retorna o tamanho do array
$t = sizeof($a);
/*como invertemos os extremos
só precisamos fazer a metade
do número de elementos*/
for($i=0;$i<$t/2;$i++){
$aux = $a[$i];
$a[$i] = $a[($t-1)-$i];
$a[($t-1)-$i] = $aux;
}
print_r($a);
17/12/12 Desenvolvimento Web I 31/46
32. Exercício
Faça um script para ordenar um array:
$valor = array(34,2,0,47,1);
0 1 2 34 47
17/12/12 Desenvolvimento Web I 32/46
34. array_push
● Adiciona elementos ao final do array
$a = array('verde','azul','branco');
array_push($a,'amarelo');
print_r($a);
17/12/12 Desenvolvimento Web I 34/46
35. array_pop
● Remove um valor do final de um array
$a = array('verde','azul','branco','amarelo');
array_pop($a);
print_r($a);
17/12/12 Desenvolvimento Web I 35/46
36. array_shift
● Remove um elemento do início do array
$a = array('verde','azul','branco','amarelo');
array_shift($a);
print_r($a);
17/12/12 Desenvolvimento Web I 36/46
37. array_unshift
● Adiciona um elemento do início do array
$a = array('verde','azul','branco');
array_unshift($a,'amarelo');
print_r($a);
17/12/12 Desenvolvimento Web I 37/46
38. array_reverse
● Recebe um array e retorna-o na ordem
inversa
$a = array('verde','azul','branco');
$b = array_reverse($a,false);
$c = array_reverse($a,true);
print_r($b);
print_r($c);
Com TRUE as chaves são preservadas
17/12/12 Desenvolvimento Web I 38/46
39. array_merge
● Mesca dois ou mais arrays. Um é
adicionado ao final do outro
$a = array('azul','branco');
$b = array('verde','vermelho');
$c = array_merge($a,$b);
print_r($c);
17/12/12 Desenvolvimento Web I 39/46
40. array_slice
● Extrai uma porção do array
$a = array('azul','branco','verde','vermelho','cinza');
$b = array_slice($a,1,3);
print_r($b);
17/12/12 Desenvolvimento Web I 40/46
41. in_array
● Verifica se um array contém um
determinado valor
$a = array('azul','branco','verde','vermelho','cinza');
if(in_array('verde',$a))
{
echo “valor encontrado”;
}
17/12/12 Desenvolvimento Web I 41/46
42. count
● Retorna a quantidade de elementos de um
array
$a = array('azul','branco','verde','vermelho','cinza');
echo 'o array $a contém '.count($a).' posições';
17/12/12 Desenvolvimento Web I 42/46
43. sort
● Ordena um array pelo seu valor
$a = array('azul','branco','verde','vermelho','cinza');
sort($a);
print_r($a);
17/12/12 Desenvolvimento Web I 43/46
44. explode
● Converte uma string em um array, separando
os elementos por meio de um separador
$string = "pé/meia/sapato";
$resultado = explode("/",$string);
print_r($resultado);
17/12/12 Desenvolvimento Web I 44/46
45. implode
● Converte um array em uma string, separando
os elementos por meio de um separador
$nome = array('pé','meia','sapato');
$resultado = implode("+",$nome);
print_r($resultado);
17/12/12 Desenvolvimento Web I 45/46