Anda di halaman 1dari 45

Criando Relatrios

com PHP

Pablo DallOglio

Novatec

Copyright 2011 da Novatec Editora Ltda.


Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.
proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Reviso gramatical: Patrizia Zagni
Editorao eletrnica: Camila Kuwabata e Carolina Kuwabata
Capa: Pablo DallOglio e Victor Bittow
ISBN: 978-85-7522-263-8
Histrico de impresses:
Janeiro/2011

Primeira edio

Novatec Editora Ltda.


Rua Lus Antnio dos Santos 110
02460-000 So Paulo, SP Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
Email: novatec@novatec.com.br
Site: novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec

Dados

Internacionais de Catalogao na Publicao


(Cmara Brasileira do Livro, SP, Brasil)
Dall`Oglio, Pablo
Criando relatrio com PHP / Pablo Dall`Oglio. -So Paulo : Novatec Editora, 2011.
ISBN 978-85-7522-263-8
1. PHP (Linguagem de programao para
computadores) I. Ttulo.

10-14195

CDD-005.133
ndices para catlogo sistemtico:
1. Criando relatrio com PHP : Linguagem de
programao : Computadores : Processamento de
dados
005.133

OGF20101221

(CIP)

captulo 1

Introduo ao PHP

Persistir na raiva como apanhar um pedao de carvo quente com a inteno de o atirar em algum. sempre quem levanta a pedra que se queima.
Buda

O presente captulo realiza uma introduo sobre as diversas funes, comandos e


estruturas de controle bsicos da linguagem PHP, que so possivelmente utilizados
ao longo do livro. Conheceremos as estruturas bsicas da linguagem, suas variveis
e seus operadores e tambm um conjunto de funes para manipulao de arquivos,
de arrays, de bancos de dados, dentre outros.

O que o PHP?
A linguagem de programao PHP, cuja logomarca apresentada na figura 1.1, foi
criada no outono de 1994 por Rasmus Lerdorf. No incio era formada por um conjunto de scripts voltados criao de pginas dinmicas que Rasmus utilizava para
monitorar o acesso ao seu currculo na internet. medida que essa ferramenta foi
crescendo em funcionalidades, Rasmus teve de escrever uma implementao em C,
que permitia que as pessoas desenvolvessem de forma muito simples suas aplicaes
para web. Rasmus nomeou essa verso de PHP/FI (Personal Home Pages/Forms Interpreter) e decidiu disponibilizar seu cdigo na web em 1995 para compartilh-lo com
outras pessoas, bem como receber ajuda e correo de bugs.

Figura 1.1 Logo do PHP.

Em novembro de 1997, foi lanada a segunda verso do PHP. Nesse momento, aproximadamente 50 mil domnios, ou 1% da internet, utilizavam PHP. No mesmo ano,
Andi Gutmans e Zeev Suraski, dois estudantes que utilizavam PHP em um projeto
acadmico de comrcio eletrnico, resolveram cooperar com Rasmus para aprimorar
o PHP. Para tal, reescreverem todo o cdigo, com base no PHP/FI 2, nascendo assim o
16

Captulo 1 Introduo ao PHP

17

PHP 3, disponibilizado oficialmente em junho de 1998. Dentre as principais caractersticas do PHP 3, estavam a extensibilidade, a possibilidade de conexo com vrios
bancos de dados, novos protocolos, uma sintaxe mais consistente, suporte orientao
a objetos e uma nova API, que possibilitava criar novos mdulos e acabou por atrair
vrios desenvolvedores ao PHP. No final de 1998, o PHP estava presente em cerca de
10% dos domnios da internet. Nessa poca, o significado da sigla PHP mudou para
PHP: Hypertext Preprocessor, para retratar a nova realidade de uma linguagem com
propsitos mais amplos.
No inverno de 1998, aps o lanamento do PHP 3, Zeev e Andi comearam a trabalhar em uma reescrita do ncleo do PHP, tendo em vista melhorar sua performance
e modularidade em aplicaes complexas. Para tal, resolveram batizar esse ncleo de
Zend Engine, ou Mecanismo Zend (Zeev + Andi). O PHP 4, com base nesse mecanismo, foi lanado oficialmente em maio de 2000, trazendo muitas melhorias e recursos
novos, como sees, suporte a diversos servidores web, alm da abstrao de sua API,
permitindo at ser utilizado como linguagem para shell script. Nesse momento, o PHP
estava presente em cerca de 20% dos domnios da internet, alm de ser utilizado por
milhares de desenvolvedores ao redor do mundo.
Apesar de todos os esforos, o PHP ainda ressentia de maior suporte orientao a
objetos, tal qual existe em linguagens como C++ e Java. Esses recursos foram trazidos
pelo PHP 5, aps um longo perodo de desenvolvimento que culminou com sua disponibilizao oficial em julho de 2004. Atualmente, na verso 6, o PHP se consolida
como uma das linguagens de programao que mais crescem no mundo.
fonte: PHP Group

Um programa PHP
Nesta seo, sero abordadas as caractersticas bsicas de um programa PHP.

Extenso de arquivos
A seguir, esto listadas as extenses mais utilizadas para programas em PHP.
Extenso
.php
.class.php
.inc.php

Significado
Arquivo PHP contendo um programa PHP.
Arquivo PHP contendo uma classe PHP.
Arquivo PHP a ser includo, podendo conter constantes ou configuraes.

Delimitadores de cdigo
O cdigo de um programa escrito em PHP deve estar contido entre os seguintes
delimitadores:

18

Criando Relatrios com PHP


<?php
// cdigo;
// cdigo;
// cdigo;
?>

Obs.: Os comandos so finalizados por ponto-e-vrgula (;).

Comentrios
Para comentar uma nica linha:
// echo "a";
# echo "a";

Para comentar muitas linhas:


/* echo "a";
echo "b"; */

Comandos de sada (output)


Esses so os comandos utilizados para gerar uma sada em tela (output). Se o programa PHP for executado na linha de comando (prompt do sistema), a sada ser no
prprio console. J se o programa for executado via servidor de pginas web (Apache
ou IIS), a sada ser exibida na prpria pgina HTML gerada.

echo
um comando que imprime uma ou mais variveis no console. Exemplo:
echo 'a', 'b', 'c';


Resultado:
abc

print
uma funo que imprime uma string no console. Exemplo:
print('abc');


Resultado:
abc

var_dump
Imprime o contedo de uma varivel de forma explanativa, muito comum para realizar debug. Se o parmetro for um objeto, imprimir todos seus atributos; se for um

Captulo 1 Introduo ao PHP

19

array de vrias dimenses, imprimir todas elas, com seus respectivos contedos e
tipos de dados. Exemplo:
$vetor = array('Palio', 'Gol', 'Fiesta', 'Corsa');
var_dump($vetor);


Resultado:
array(4) {
[0]=>
string(5)
[1]=>
string(3)
[2]=>
string(6)
[3]=>
string(5)
}

"Palio"
"Gol"
"Fiesta"
"Corsa"

print_r
Imprime o contedo de uma varivel de forma explanativa, assim como a var_dump(),
mas em um formato mais legvel para o programador, com os contedos alinhados
e suprimindo os tipos de dados. Exemplo:
$vetor = array('Palio', 'Gol', 'Fiesta', 'Corsa');
print_r($vetor);


Resultado:
Array
(
[0]
[1]
[2]
[3]
)

=>
=>
=>
=>

Palio
Gol
Fiesta
Corsa

Variveis
Variveis so identificadores utilizados para representar valores mutveis e volteis,
que s existem durante a execuo do programa. Assim como o programa durante
sua execuo, so armazenadas na memria RAM e seu contedo destrudo aps
a execuo do programa.
Para criar uma varivel em PHP, precisamos lhe atribuir um nome de identificao,
sempre precedido pelo caractere cifro ($). Veja os exemplos a seguir:

20

Criando Relatrios com PHP


<?php
$nome = "Joo";
$sobrenome = "da Silva";
echo "$sobrenome, $nome";
?>


Resultado:
da Silva, Joo

Algumas dicas:
nunca inicie a nomenclatura de variveis com nmeros;
nunca utilize espaos em branco no meio do identificador da varivel;
nunca utilize caracteres especiais (! @ # $ % ^ & * / | [ ] { }) na nomenclatura
das variveis;
evite criar variveis com mais de 15 caracteres em razo da clareza do cdigo;
nomes de variveis devem ser significativos e transmitir a ideia de seu contedo
dentro do contexto no qual a varivel est inserida;
utilize preferencialmente palavras em minsculo (separadas pelo caractere _)
ou somente as primeiras letras em maisculo quando da ocorrncia de mais
palavras:
<?php
$codigo_cliente
$codigoCliente
?>

// exemplo de varivel
// exemplo de varivel

Com exceo de nomes de classes e funes, o PHP case sensitive, ou seja, sensvel
a letras maisculas e minsculas. Tome cuidado ao declarar variveis. Por exemplo, a
varivel $codigo tratada de forma totalmente diferente da varivel $Codigo.
Em alguns casos, precisamos ter em nosso cdigo nomes de variveis que podem
mudar de acordo com determinada situao. Nesse caso, no s o contedo da varivel mutvel, mas tambm seu nome. Para isso, o PHP implementa o conceito de
variveis variantes (variable variables). Sempre que utilizarmos dois sinais de cifro ($)
precedendo o nome de uma varivel, o PHP referenciar uma varivel representada
pelo contedo da primeira. Neste exemplo, estamos utilizando esse recurso quando
declaramos a varivel $nome (contedo de $variavel) contendo maria.
<?php
// define o nome da varivel
$variavel = 'nome';

Captulo 1 Introduo ao PHP

21

// cria varivel identificada pelo contedo de $variavel


$$variavel = 'maria';
// exibe varivel $nome na tela
echo $nome; // resultado = maria
?>

Quando uma varivel atribuda a outra, sempre criada uma nova rea de armazenamento na memria. Veja neste exemplo que, apesar de $b receber o mesmo contedo
de $a, aps qualquer modificao em $b, $a continua com seu mesmo valor.
<?php
$a = 5;
$b = $a;
$b = 10;
echo $a;
echo $b;
?>

// resultado = 5
// resultado = 10

Para criar referncia entre variveis, ou seja, duas variveis apontando para a mesma
regio da memria, a atribuio deve ser precedida do operador &. Assim, qualquer
alterao em qualquer uma das variveis reflete na outra.
<?php
$a = 5;
$b = &$a;
$b = 10;
echo $a;
echo $b;
?>

// resultado = 10
// resultado = 10

Tipo Booleano
Um booleano expressa um valor lgico que pode ser verdadeiro ou falso. Para especificar um valor booleano, utilize as palavras-chave TRUE ou FALSE. No exemplo a seguir,
declaramos a varivel booleana $exibir_nome, cujo contedo TRUE (verdadeiro). Logo a
seguir, testamos o contedo dessa varivel para verificar se realmente verdadeira.
Se for, exibiremos na tela o nome Jos da Silva.
<?php
// declara varivel com valor TRUE
$exibir_nome = TRUE;
// testa se $exibir_nome TRUE
if ($exibir_nome) {
echo 'Jos da Silva';
}
?>

22

Criando Relatrios com PHP


Resultado:
Jos da Silva

Neste prximo programa, criamos uma varivel numrica contendo o valor 91. Logo
a seguir, testamos se essa varivel maior que 90. Essa comparao tambm retorna
um valor booleano (TRUE ou FALSE). Logo, o contedo da varivel $vai_chover um booleano que ser testado logo em seguida para a impresso da string Est chovendo.
<?php
// declara varivel numrica
$umidade = 91;
// testa se maior que 90. Retorna um booleano
$vai_chover = ($umidade > 90);
// testa se $vai_chover verdadeiro
if ($vai_chover)
{
echo 'Est chovendo';
}
?>


Resultado:
Est chovendo

Tambm so considerados valores falsos (FALSE) em comparaes booleanas:


inteiro 0;
ponto flutuante 0.0;
uma string vazia ou 0;
um array vazio;
um objeto sem elementos;
tipo NULL.

Tipo Numrico
Nmeros podem ser especificados em notao decimal (base 10), hexadecimal (base
16) ou octal (base 8), opcionalmente precedidos de sinal (- ou +).
<?php
// nmero decimal
$a = 1234;
// um nmero negativo
$a = -123;

Captulo 1 Introduo ao PHP

23

// nmero octal (equivalente a 83 em decimal)


$a = 0123;
// nmero hexadecimal (equivalente a 26 em decimal)
$a = 0x1A;
// ponto flutuante
$a = 1.234;
// notao cientfica
$a = 4e23;
?>

Tipo String
Uma string uma cadeia de caracteres alfanumricos. Para declarar uma string,
podemos utilizar aspas simples ou aspas duplas . Veja com mais detalhes como
manipular strings ainda nesse captulo.
<?php
$variavel = 'Isto um teste';
$variavel = "Isto um teste";
?>

Tipo Array
Array uma lista de valores armazenados na memria, os quais podem ser de tipos
diferentes (nmeros, strings, objetos) e acessados a qualquer momento, pois cada
valor relacionado a uma chave. Um array tambm pode crescer dinamicamente
por meio da adio de novos itens. Veja ainda nesse captulo mais detalhes de como
manipular arrays.
<?php
$carros = array('Palio', 'Corsa', 'Gol');
echo $carros[1]; // resultado = 'Corsa'
?>

Tipo Objeto
Um objeto uma entidade com um determinado comportamento definido por seus
mtodos (aes) e propriedades (atributos). Para criar um objeto, devemos utilizar o
operador new. Veja o exemplo de um objeto do tipo Computador. Veja no captulo 2 mais
detalhes de como manipular classes e objetos.
<?php
class Computador {
public $cpu;
function ligar() {

24

Criando Relatrios com PHP



}
}

echo "Ligando computador a {$this->cpu}...";

$obj = new Computador;


$obj->cpu = "500Mhz";
$obj->ligar();
?>


Resultado:
Ligando computador a 500Mhz...

Tipo Recurso
Recurso ou resource uma varivel especial que mantm uma referncia de recurso
externo. Recursos so criados e utilizados por funes especiais, como uma conexo
ao banco de dados. Um exemplo a funo mysql_connect(), que, ao conectar-se ao
banco de dados, retorna uma varivel de referncia do tipo recurso:
resource mysql_connect(...)

Tipo Misto
O tipo Misto (Mixed) representa mltiplos (no necessariamente todos) tipos de
dados em um mesmo parmetro. Um parmetro do tipo mixed indica que a funo
aceita diversos tipos de dados como parmetro. Um exemplo a funo gettype(),
que obtm o tipo da varivel passada como parmetro (que pode ser integer, string,
array, object, entre outros).
string gettype (mixed var)

Veja alguns tipos possveis de parmetro:


"boolean"
"integer"
"double"
"string"
"array"
"object"
"resource"
"NULL"

Tipo Callback
Algumas funes como call_user_func() aceitam um parmetro que significa uma
funo a ser executada. Esse tipo de dado chamado de callback. Um parmetro

Captulo 1 Introduo ao PHP

25

callback pode ser o nome de uma funo representada por uma string ou o mtodo
de um objeto a ser executado, representados por um array.

Tipo NULL
A utilizao do valor especial NULL significa que a varivel no tem valor. NULL o nico
valor possvel do tipo NULL.

Constantes
Uma constante um valor que no sofre modificaes durante a execuo do programa. Uma constante representada por um identificador, assim como as variveis,
com a exceo de que s podem conter valores escalares (boolean, inteiro, float e
string). Um valor escalar no pode ser composto de outros valores, como vetores
ou objetos. As regras de nomenclatura de constantes seguem as mesmas regras das
variveis, com a exceo de que as constantes no so precedidas pelo sinal de cifro
($) e geralmente se utilizam nomes em maisculo.
MAXIMO_CLIENTES // exemplo de constante

Podemos definir uma constante utilizando a funo define(). Quando uma constante
definida, ela no pode ser mais modificada ou anulada:
Exemplo:
<?php
define("MAXIMO_CLIENTES", 100);
echo MAXIMO_CLIENTES;
?>


Resultado:
100

Operadores
Atribuio
Um operador de atribuio utilizado para definir uma varivel atribuindo-lhe um
valor. O operador bsico de atribuio =.
<?php
$var +=
$var -=
$var *=
$var /=
?>

5;
5;
5;
5;

//
//
//
//

soma 5 em $var;
subtrai 5 em $var;
multiplica $var por 5;
divide $var por 5;

26

Criando Relatrios com PHP


Operadores
++$a
$a++
--$a
$a--

Descrio
Pr-incremento. Incrementa $a em um e, ento, retorna $a.
Ps-incremento. Retorna $a e, ento, incrementa $a em um.
Pr-decremento. Decrementa $a em um e, ento, retorna $a.
Ps-decremento. Retorna $a e, ento, decrementa $a em um.

Aritmticos
Operadores aritmticos so utilizados para realizar clculos matemticos.
Operadores
+
-
*
/
%

Descrio
Adio.
Subtrao.
Multiplicao.
Diviso.
Mdulo (resto da diviso).

Em clculos complexos, procure utilizar parnteses, sempre observando as prioridades


aritmticas. Por exemplo:
<?php
$a = 2;
$b = 4;
echo $a+3*4+5*$b; // resultado = 34
echo ($a+3)*4+(5*$b); // resultado = 40
?>

O PHP realiza automaticamente a converso de tipos em operaes:


<?php
// declarao de uma string contendo 10
$a = '10';
// soma + 5
echo $a + 5;
?>


Resultado:
15

Relacionais
Operadores relacionais so utilizados para realizar comparaes entre valores ou
expresses, resultando sempre um valor boolean (TRUE ou FALSE).

Captulo 1 Introduo ao PHP

27

Comparadores Descrio
(==)
Igual. Resulta verdadeiro (TRUE) se expresses forem iguais.
(===)
Idntico. Resulta verdadeiro (TRUE) se as expresses forem iguais e do
mesmo tipo de dados.
(!= ou <>)
Diferente. Resulta verdadeiro (TRUE) se as variveis forem diferentes.
(<)
Menor.
(>)
Maior que.
(<=)
Menor que ou igual.
(>=)
Maior que ou igual.

Veja a seguir alguns testes lgicos e seu respectivo resultado. Neste primeiro caso,
vemos a utilizao errada do operador de atribuio =, para realizar uma comparao.
O operador de atribuio sempre retorna o valor TRUE.
<?php
if ($a = 5)
{
echo 'essa operao atribui 5 varivel $a e retorna sempre verdadeiro';
}
?>


Resultado:
essa operao atribui 5 varivel $a e retorna sempre verdadeiro

Neste exemplo, declaramos duas variveis, uma integer e outra string. Neste caso,
vemos a utilizao dos operadores de comparao == e !=.
<?php
$a = 1234;
$b = '1234';
if ($a == $b)
{
echo '$a e $b so iguais';
}
else if ($a != $b)
{
echo '$a e $b so diferentes';
}
?>


Resultado:
$a e $b so iguais

Neste caso, alm da comparao entre as variveis, comparamos tambm os tipos de


dado das variveis.

28

Criando Relatrios com PHP


<?php
$c = 1234;
$d = '1234';
if
{

}
if
{

}
?>

($c === $d)


echo '$c e $d so iguais e do mesmo tipo';
($c !== $d)
echo '$c e $d so de tipos diferentes';


Resultado:
$c e $d so de tipos diferentes

O PHP considera o valor zero como sendo falso (FALSE) em comparaes lgicas. Para
evitar erros semnticos em retorno de valores calculados por funes que podem
retornar tanto um valor booleano quanto um inteiro, podemos utilizar as seguintes
comparaes:
<?php
$e = 0;
// zero sempre igual FALSE
if ($e == FALSE)
{
echo '$e falso ';
}
// testa se $e do tipo FALSE
if ($e === FALSE)
{
echo '$e do tipo false ';
}
// testa se $e igual a zero e do mesmo tipo que zero
if ($e === 0)
{
echo '$e zero mesmo ';
}
?>


Resultado:
$e falso
$e zero mesmo

Captulo 1 Introduo ao PHP

29

Lgicos
Operadores lgicos so utilizados para combinar expresses lgicas entre si, agrupando testes condicionais.
Operador

Descrio
($a and $b) E: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros.
($a or $b) OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros.
($a xor $b) XOR: Verdadeiro (TRUE) se $a ou $b forem verdadeiros, de forma exclusiva.
(! $a)
NOT: Verdadeiro (TRUE) se $a for FALSE.
($a && $b) E: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros.
($a || $b) OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros.
Obs.: Or e and tm precedncia menor que && ou ||.

No programa a seguir, se as variveis $vai_chover e $esta_frio forem verdadeiras ao


mesmo tempo, ser impresso no console No vou sair de casa.
<?php
$vai_chover = TRUE;
$esta_frio = TRUE;
if ($vai_chover and $esta_frio)
{
echo "No vou sair de casa";
}
?>


Resultado:
No vou sair de casa

J neste outro programa, se uma varivel for TRUE e a outra for FALSE (OU exclusivo),
ser impresso no console Vou pensar duas vezes antes de sair.
<?php
$vai_chover = FALSE;
$esta_frio = TRUE;
if ($vai_chover xor $esta_frio)
{
echo "Vou pensar duas vezes antes de sair";
}
?>


Resultado:
Vou pensar duas vezes antes de sair

30

Criando Relatrios com PHP

Estruturas de controle
IF
O IF uma estrutura de controle que introduz um desvio condicional, ou seja, um
desvio na execuo natural do programa. Caso a condio dada pela expresso seja
satisfeita, ento sero executadas as instrues do bloco de comandos. Caso a condio no seja satisfeita, o bloco de comandos simplesmente ignorado. O comando
IF pode ser lido como SE (condio) ENTO { comandos... }.
ELSE:

utilizado para indicar um novo bloco de comandos delimitado por { }, caso


a condio do IF no seja satisfeita. Pode ser lido como caso contrrio. A utilizao
do ELSE opcional.
Na figura 1.2, veja um fluxograma explicando o funcionamento do comando IF. Caso
a avaliao da expresso seja verdadeira, o programa parte para a execuo de um
bloco de comandos, caso seja falsa, parte para a execuo do bloco de comandos
dada pelo ELSE.

Figura 1.2 Fluxo do comando IF.


if (condio)
{
comandos se expresso for verdadeira;
}
else
{
comandos se expresso for falsa;
}

Exemplo:
<?php
$a = 1;
if ($a == 5) {
echo " igual";
}
else {
echo "no igual";
}
?>

Captulo 1 Introduo ao PHP

31


Resultado:
no igual

Quando no explicitamos o operador lgico em testes por meio do IF, o comportamento-padro do PHP retornar TRUE sempre que a varivel tiver contedo no
considerado falso.
<?php
$a = 'conteudo';
if ($a)
{
echo '$a tem contedo';
}
if ($b)
{
echo '$b tem contedo';
}
?>


Resultado:
$a tem contedo

Para realizar testes encadeados, basta colocar um IF dentro do outro, ou mesmo utilizar
o operador AND da seguinte forma:
<?php
$salario
= 1020; // R$
$tempo_servico = 12; // meses
$tem_reclamacoes = false; // booleano
if ($salario > 1000)
{
if ($tempo_servico >= 12)
{
if ($tem_reclamacoes != true)
{
echo 'parabns, voc foi promovido<br>';
}
}
}
if (($salario > 1000) and ($tempo_servico >= 12) and ($tem_reclamacoes != true))
{
echo 'parabns, voc foi promovido<br>';
}
?>

32

Criando Relatrios com PHP


Resultado:
parabns, voc foi promovido
parabns, voc foi promovido

O PHP nos oferece facilidades quando desejamos realizar tarefas simples como realizar
uma atribuio condicional a uma varivel. A seguir, confira um cdigo tradicional
que verifica o estado de uma varivel antes de atribuir o resultado.
If ($valor_venda > 100)
{
$resultado = 'muito caro';
}
else
{
$resultado = 'pode comprar';
}

O mesmo cdigo poderia ser escrito em uma nica linha, da seguinte forma:
$resultado = ($valor_venda > 100) ? 'muito caro' : 'pode comprar';

A primeira expresso a condio a ser avaliada, a segunda o valor atribudo caso


esta seja verdadeira e a terceira o valor atribudo caso esta seja falsa.

WHILE
O WHILE uma estrutura de controle similar ao IF. Da mesma forma, tem uma condio
para executar um bloco de comandos. A diferena primordial que o WHILE estabelece
um lao de repetio, ou seja, o bloco de comandos ser executado repetitivamente
enquanto a condio de entrada dada pela expresso for verdadeira. O comando WHILE
pode ser interpretado como ENQUANTO (condio) FAA { comandos... }.
A figura 1.3 procura explicar o fluxo de funcionamento do comando WHILE. Quando
a expresso avaliada como TRUE, o programa parte para a execuo de um bloco de
comandos. Quando do fim da execuo desse bloco de comandos, o programa retorna ao ponto inicial da avaliao e se a expresso continuar verdadeira, o programa
continuar tambm com a execuo do bloco de comandos, constituindo um lao
de repeties. Esse lao de repeties s interrompido quando a expresso avaliada
retornar um valor falso (FALSE).

33

Captulo 1 Introduo ao PHP

Figura 1.3 Fluxo do comando WHILE.


while (condio)
{
comandos;
}

No exemplo a seguir, o comando WHILE est avaliando a expresso se $a menor que


5 como ponto de entrada do lao de repeties. Na primeira vez que executada essa
comparao, retornado TRUE, visto que o valor de $a 1. Logo, o programa entra no
lao de repeties executando os comandos entre { }. Observe que dentro do bloco
de comandos a varivel $a incrementada. Assim, essa execuo perdurar por mais
algumas iteraes. Quando seu valor for igual a 5, a comparao retornar FALSE e no
mais entrar no WHILE, parando de executar o bloco de comandos.
<?php
$a = 1;
while ($a < 5) {
print $a;
$a ++;
}
?>


Resultado:
1234

FOR
O FOR uma estrutura de controle que estabelece um lao de repetio com base em
um contador, sendo muito similar ao comando WHILE. O FOR controlado por um bloco
de trs comandos que estabelecem uma contagem, ou seja, o bloco de comandos ser
executado certo nmero de vezes.
for (expr1; expr2; expr3)
{
comandos
}

34

Criando Relatrios com PHP


Parmetros
expr1
expr2
expr3

Descrio
Valor inicial da varivel contadora.
Condio de parada, quando se deve terminar a execuo do bloco de
comandos.
Valor a ser incrementado aps cada execuo.

Exemplo:
<?php
for ($i = 1; $i <= 10; $i++)
{
print $i;
}
?>


Resultado:
12345678910

Procure utilizar nomes sugestivos para variveis. Mas em alguns casos especficos,
como em contadores, permita-se utilizar variveis de apenas uma letra, como no
exemplo a seguir:
<?php
for ( $i = 0; $i < 5; $i++ )
{
for ( $j = 0; $j < 4; $j++ )
{
for ( $k = 0; $k < 3; $k++ )
{
// comandos...
}
}
}
?>

Evite laos de repetio com muitos nveis de iterao. Como Linus Torvalds disse
certa vez, se voc est utilizando trs nveis encadeados ou mais, considere a possibilidade de revisar a lgica de seu programa.

SWITCH
O comando switch uma estrutura que simula uma bateria de testes sobre uma varivel.
similar a uma srie de comandos IFs sobre a mesma expresso. Frequentemente,
necessrio comparar a mesma varivel com valores diferentes e executar uma ao
especfica em cada um desses casos.

35

Captulo 1 Introduo ao PHP

No fluxograma apresentado na figura 1.4, vemos que para cada teste condicional
(CASE), existe um bloco de comandos a ser executado caso a expresso avaliada retorne
verdadeiro (TRUE). Caso a expresso retorne falso (FALSE), o SWITCH parte para a prxima
expresso a ser avaliada, at que no tenha mais expresses para avaliar. Se todas
as expresses forem falsas, o SWITCH executar o bloco de cdigos representado pelo
identificador default.

Figura 1.4 Fluxo do comando SWITCH.

Sintaxe do comando:
switch ($condio)
{
case "valor 1":
// comandos
break;
case "valor 2":
// comandos
break;
case "valor n";
// comandos
break;
default:
// comandos
}

Os exemplos seguintes representam duas formas diferentes de se atingir o mesmo


resultado. Primeiro, por meio de uma srie de comandos IF e, logo em seguida, utilizando a estrutura SWITCH.
Obs.: Se voc tem um switch dentro de um loop e deseja continuar para a prxima
iterao do lao de repetio, utilize o comando continue 2, que escapar dois nveis
acima.
<?php
$i = 1;

36

Criando Relatrios com PHP


if ($i == 0)
{
print "i igual a 0";
}
elseif ($i == 1)
{
print "i igual a 1";
}
elseif ($i == 2)
{
print "i igual a 2";
}
else
{
print "i no igual a 0, 1 ou 2";
}
?>


Resultado:
i igual a 1

O switch executa linha por linha at encontrar a ocorrncia de break. Por isso, o comando
break essencial para evitar que os blocos de comando seguintes sejam executados
por engano. A clusula default ser executada caso nenhuma das expresses anteriores
tenha sido verificada.
<?php
$i = 1;
switch ($i)
{
case 0:
print "i
break;
case 1:
print "i
break;
case 2:
print "i
break;
default:
print "i
}
?>


Resultado:
i igual a 1

igual a 0";

igual a 1";

igual a 2";

no igual a 0, 1 ou 2";

Captulo 1 Introduo ao PHP

37

FOREACH
O foreach um lao de repetio para iteraes em arrays ou matrizes. um FOR simplificado que decompe um vetor ou matriz em cada um de seus elementos por meio
de sua clusula AS.
foreach ($array as $valor)
{
instrues
}

Exemplo:
<?php
$fruta = array("ma", "laranja", "pera", "banana");
foreach ($fruta as $valor)
{
print "$valor -";
}
?>


Resultado:
ma laranja pera banana

CONTINUE
A instruo continue, quando executada em um bloco de comandos FOR/WHILE, ignora
as instrues restantes at o fechamento em }. Dessa forma, o programa segue para
a prxima verificao da condio de entrada do lao de repetio.

BREAK
O comando break aborta a execuo de blocos de comandos, como IF, WHILE e FOR.
Quando estamos em uma execuo com muitos nveis de iterao e desejamos abortar
n nveis, a sintaxe a seguinte:
While...
For...
break <quantidade de nveis>

Requisio de arquivos
Em linguagens de script como o PHP, frequentemente precisamos incluir dentro de
nossos programas outros arquivos com definies de funes, constantes, configuraes ou mesmo carregar um arquivo contendo a definio de uma classe. Para atingir
esse objetivo no PHP, podemos fazer uso de um dos comandos a seguir.

38

Criando Relatrios com PHP

include <arquivo>
A instruo include() inclui e avalia o arquivo informado. Seu cdigo (variveis, objetos e arrays) entra no escopo do programa, tornando-se disponvel a partir da linha
na qual a incluso ocorre. Se o arquivo no existir, produzir uma mensagem de
advertncia (warning).
Exemplo:


biblioteca.php
<?php
/*
* funo quadrado
* retorna o quadrado de um nmero
*/
function quadrado($numero)
{
return $numero * $numero;
}
?>


teste.php
<?php
// carrega arquivo com a funo necessria
include 'biblioteca.php';
// imprime o quadrado do nmero 4
echo quadrado(4);
?>


Resultado:
16

require <arquivo>
Idntico ao include. Difere somente na manipulao de erros. Enquanto o include produz uma warning, o require produz uma mensagem de Fatal Error caso o arquivo
no exista.

include_once <arquivo>
Funciona da mesma maneira que o comando include, a no ser que o arquivo informado j tenha sido includo, no refazendo a operao (o arquivo includo apenas
uma vez). Esse comando til em casos em que o programa pode passar mais de uma
vez pela mesma instruo. Assim, evitar sobreposies, redeclaraes etc.

Captulo 1 Introduo ao PHP

39

require_once <arquivo>
Funciona da mesma maneira que o comando require, a no ser que o arquivo informado j tenha sido includo, no refazendo a operao (o arquivo includo apenas
uma vez). Esse comando til em casos em que o programa pode passar mais de uma
vez pela mesma instruo. Assim, evitar sobreposies, redeclaraes etc.

Manipulao de funes
Uma funo um pedao de cdigo com um objetivo especfico, encapsulado sob
uma estrutura nica que recebe um conjunto de parmetros e retorna um dado. Uma
funo declarada uma nica vez, mas pode ser utilizada diversas vezes. Trata-se de
uma das estruturas mais bsicas para prover reusabilidade.

Criao
Para declarar uma funo em PHP, utiliza-se o operador function seguido do nome
que desejamos lhe atribuir, sem espaos em branco e iniciando obrigatoriamente
com uma letra. Na mesma linha, digitamos a lista de argumentos (parmetros) que
a funo receber, separados por vrgula. A seguir, encapsulado por chaves {}, vem o
cdigo da funo. No final, utilizamos a clusula return para retornar o resultado da
funo (integer, string, array, objeto etc.).
<?php
// exemplo de funo
function nome_da_funcao($arg1, $arg2, $argN)
{
$valor = $arg1 + $arg2 + $argN;
return $valor;
}
?>

No exemplo a seguir, estamos criando uma funo que calcula o ndice de obesidade de algum. A funo recebe dois parmetros ($peso e $altura) e retorna um valor
definido por uma frmula.
<?php
function calcula_obesidade($peso, $altura) {
return $peso / ($altura * $altura);
}
echo calcula_obesidade(70, 1.85);
?>


Resultado:
20.45288531775

40

Criando Relatrios com PHP

Variveis globais
Todas as variveis declaradas dentro do escopo de uma funo so locais. Para acessar
uma varivel externa ao contexto de uma funo, sem pass-la como parmetro,
necessrio declar-la como global. Uma varivel global acessada a partir de qualquer ponto da aplicao. No exemplo a seguir, a funo criada converte quilmetros
em milhas, enquanto acumula a quantidade de quilmetros percorridos em uma
varivel global ($total).
<?php
$total = 0;
function km2mi($kilometros) {
global $total;
$total += $kilometros;
return $kilometros * 0.6;
}
echo 'percorreu ' . km2mi(100) . " milhas <br>\n";
echo 'percorreu ' . km2mi(200) . " milhas <br>\n";
echo 'percorreu no total ' . $total . " kilometros <br>\n";
?>


Resultado:
percorreu 60 milhas
percorreu 120 milhas
percorreu no total 300 kilometros

Obs.: A utilizao de variveis globais no considerada uma boa prtica de


programao, pois uma varivel global pode ser alterada a partir de qualquer parte da
aplicao. Dessa forma, valores inconsistentes podem ser armazenados em uma varivel
global, podendo resultar em um comportamento inesperado da aplicao.

Variveis estticas
Dentro do escopo de uma funo, podemos armazenar variveis de forma esttica.
Assim, elas mantm o valor que lhes foi atribudo na ltima execuo.
<?php
function percorre($kilometros) {
static $total;
$total += $kilometros;
echo "percorreu mais $kilometros do total de $total<br>\n";
}
percorre(100);
percorre(200);
percorre(50);
?>

Captulo 1 Introduo ao PHP

41


Resultado:
percorreu mais 100 do total de 100
percorreu mais 200 do total de 300
percorreu mais 50 do total de 350

Passagem de parmetros
Existem dois tipos de passagem de parmetros, por valor (by value) e por referncia
(by reference). Por padro, os valores so passados by value para as funes. Assim, o
parmetro que a funo recebe tratado como varivel local dentro do contexto da
funo, no alterando seu valor externo. Objetos so passados por referncia.
<?php
function Incrementa($variavel, $valor)
{
$variavel += $valor;
}
$a = 10;
Incrementa($a, 20);
echo $a;
?>


Resultado:
10

Para efetuar a passagem de parmetros by reference para as funes, basta utilizar o


operador & na frente do parmetro, fazendo com que as transformaes realizadas
pela funo sobre a varivel sejam vlidas no contexto externo funo.
<?php
function Incrementa(&$variavel, $valor)
{
$variavel += $valor;
}
$a = 10;
Incrementa($a, 20);
echo $a;
?>


Resultado:
30

O PHP permite definir valores default para parmetros. Reescreveremos a funo


anterior, declarando o default de $valor como sendo 40. Assim, se o programador
executar a funo sem especificar o parmetro, ser assumido o valor 40.

42

Criando Relatrios com PHP


<?php
function Incrementa(&$variavel, $valor = 40)
{
$variavel += $valor;
}
$a = 10;
Incrementa($a);
echo $a;
?>


Resultado:
50

O PHP tambm permite definir uma funo com o nmero de argumentos variveis,
ou seja, obt-los de forma dinmica, mesmo sem saber quais so ou quantos so.
Para obter quais so, utilizamos a funo func_get_args(), e para obter a quantidade
de argumentos, utilizamos a funo func_num_args().
<?php
function Ola()
{
$argumentos = func_get_args();
$quantidade = func_num_args();
for($n=0; $n<$quantidade; $n++)
{
echo 'Ol ' . $argumentos[$n] . "<br>\n";
}
}
Ola('Joo', 'Maria', 'Jos', 'Pedro');
?>


Resultado:
Ol
Ol
Ol
Ol

Joo
Maria
Jos
Pedro

Recurso
O PHP permite a chamada de funes recursivamente. No caso a seguir, criaremos
uma funo para calcular o fatorial de um nmero.
<?php
function Fatorial($numero)
{

Captulo 1 Introduo ao PHP

43

if ($numero == 1)
return $numero;
else
return $numero * Fatorial($numero -1);
}
echo Fatorial(5) . "<br>\n";
echo Fatorial(7) . "<br>\n";
?>


Resultado:
120
5040

Manipulao de arquivos e diretrios


A seguir, veremos algumas funes utilizadas para manipular arquivos.

fopen
Abre um arquivo e retorna um identificador. Se o nome do arquivo estiver na forma
protocolo://..., o PHP procurar um manipulador de protocolo, tambm conhecido
como wrapper, conforme o prefixo.
int fopen (string arquivo, string modo [,int usar_path [, resource contexto]])

Parmetros
arquivo
modo
usar_path
contexto

Descrio
String identificando o nome do arquivo a ser aberto.
Forma de abertura do arquivo (r = read, w = write, a = append).
Se 1 ou TRUE, vasculha no path pelo arquivo a ser aberto.
Opes de contexto; variam de acordo com o protocolo do arquivo.

Exemplo:
<?php
$fp =
$fp =
$fp =
$fp =
?>

fopen
fopen
fopen
fopen

("/home/rasmus/file.txt", "r");
("/home/rasmus/file.gif", "wb");
("http://www.example.com/", "r");
("ftp://user:password@example.com/", "w");

fwrite
Grava uma string (contedo) no arquivo apontado pelo identificador de arquivo. Se
o argumento comprimento for dado, a gravao parar depois que comprimento bytes for
escrito ou o fim da string contedo for alcanada, o que ocorrer primeiro. Retorna o
nmero de bytes gravados, ou FALSE em caso de erro.

44

Criando Relatrios com PHP


int fwrite (int identificador, string contedo [, int comprimento])

Parmetros

Descrio
identificador Parmetro retornado pela fopen.
contedo
String a escrever no arquivo.
comprimento
Comprimento da string.

Exemplo:
<?php
// Abre o arquivo
$fp = fopen ("/home/pablo/file.txt", "w");
// Escreve no arquivo
fwrite ($fp, "linha 1\n");
fwrite ($fp, "linha 2\n");
fwrite ($fp, "linha 3\n");
// Fecha o arquivo
fclose ($fp);
?>

fclose
Fecha o arquivo aberto apontado pelo identificador de arquivo. Retorna TRUE em caso
de sucesso ou FALSE em caso de falha.
bool fclose (int identificador)

Parmetro

Descrio
identificador Parmetro retornado pela fopen().

file_put_contents
Grava uma string em um arquivo. Retorna a quantidade de bytes gravados.
int file_put_contents (string nome_arquivo, mixed contedo)

Parmetros

Descrio
nome_arquivo Arquivo a ser aberto.
contedo
Novo contedo.

Exemplo:
<?php
echo file_put_contents('/tmp/teste.txt', "este \n o contedo \n do arquivo");
?>

Captulo 1 Introduo ao PHP

file_get_contents
L o contedo de um arquivo e retorna o contedo em forma de string.
string file_get_contents (string nome_arquivo, ...)

Parmetros

Descrio
nome_arquivo Arquivo a ser lido.

Exemplo:
<?php
echo file_get_contents('/etc/mtab');
?>


Resultado:
/dev/hda3 / ext3 rw 0 0
/dev/hda1 /windows ntfs rw 0 0
proc /proc proc rw 0 0
usbfs /proc/bus/usb usbfs rw 0 0

file_exists
Verifica a existncia de um arquivo ou de um diretrio.
bool file_exists (string nome_arquivo)

Parmetros

Descrio
nome_arquivo Localizao de um arquivo ou diretrio.

Exemplo:
<?php
$arquivo = '/home/pablo/file2.txt';
if (file_exists($arquivo))
{
echo "Arquivo existente";
}
else
{
echo "Arquivo no existente";
}
?>


Resultado:
Arquivo no existente

45

46

Criando Relatrios com PHP

Manipulao de strings
Declarao
Uma string uma cadeia de caracteres alfanumricos. Para declarar uma string, podemos utilizar aspas simples ou aspas duplas .
$variavel = 'Isto um teste';
$variavel = "Isto um teste";

A diferena que todo contedo contido dentro de aspas duplas avaliado pelo
PHP. Assim, se a string contm uma varivel, essa varivel traduzida pelo seu valor.
<?php
$fruta = 'ma';
print "como $fruta"; // resultado 'como ma'
print 'como $fruta'; // resultado 'como $fruta'
?>

Tambm podemos declarar uma string literal com muitas linhas observando a sintaxe
a seguir, em que escolhemos uma palavra, CHAVE, para delimitar o incio e o fim da
string. Essa sintaxe tambm conhecida como heredoc.
<?php
$texto = <<<CHAVE
Aqui nesta rea
voc poder escrever
textos com mltiplas linhas
CHAVE;
echo $texto;
?>


Resultado:
Aqui nesta rea
voc poder escrever
textos com mltiplas linhas.

Concatenao
Para concatenar strings, podemos utilizar o operador . (ponto) ou, tambm, colocar
mltiplas variveis dentro de strings duplas , uma vez que seu contedo interpretado.
<?php
$fruta = 'ma';
// primeira forma
echo $fruta .' a fruta de ado';

// resultado = ma a fruta de ado

47

Captulo 1 Introduo ao PHP


// segunda forma
echo "{$fruta} a fruta de ado";
?>

// resultado = ma a fruta de ado

O PHP realiza automaticamente a converso entre tipos, como neste exemplo de


concatenao entre uma string e um nmero.
<?php
$a = 1234;
echo 'O salrio ' . $a . "<br>\n";
echo "O salrio $a <br>\n";
?>


Resultado:
O salrio 1234
O salrio 1234

Caracteres de Escape
Dentro de aspas duplas , podemos utilizar controles especiais interpretados diferentemente pelo PHP, que so os caracteres de escape (\). Veja a seguir os mais utilizados:
\n
\r
\t
\\
\"
\$

Nova linha proporciona uma quebra de linha


Retorno de carro
Tabulao
Barra invertida "\\" o mesmo que '\'
Aspas duplas
Smbolo de $

Exemplo:
<?php
echo "seu
echo 'seu
echo 'seu
echo "seu
?>

nome \"Paulo\".";
nome "Paulo".';
salrio $650,00';
salrio \$650,00";

//
//
//
//

resultado: seu nome "Paulo".


resultado: seu nome "Paulo".
seu salrio $650,00
seu salrio $650,00

Obs.: Utilize aspas duplas para declarar strings somente quando for necessrio avaliar
seu contedo, evitando, assim, tempo de processamento desnecessrio.

Funes
As funes a seguir formam um grupo cuja caracterstica comum a manipulao
de cadeias de caracteres (strings), como converses, transformaes, entre outras
funcionalidades.

48

Criando Relatrios com PHP

strtoupper
Transforma uma string (contedo) para maisculo. Retorna a string com todos os caracteres alfabticos convertidos para maisculo.
string strtoupper (string contedo)

Parmetros
contedo

Descrio
String original a ser transformada.

Exemplo:
<?php
echo strtoupper('Convertendo para maiusculo');
?>


Resultado:
CONVERTENDO PARA MAIUSCULO

strtolower
Transforma uma string (contedo) para minsculo. Retorna a string com todos os caracteres alfabticos convertidos para minsculo.
string strtolower (string contedo)

Parmetros
contedo

Descrio
String original a ser transformada.

Exemplo:
<?php
echo strtolower('CONVERTENDO PARA MINUSCULO');
?>


Resultado:
convertendo para minusculo

substr
Retorna parte de uma string (contedo). Retorna uma poro de contedo, comeando em
incio, contendo comprimento caracteres. Se comprimento for negativo, contar n caracteres
antes do final de contedo.
string substr (string contedo, int incio [, int comprimento])

Parmetros
contedo
incio
comprimento

Descrio
String original a ser percorrida.
Caractere inicial a ser lido.
Comprimento da cadeia de caracteres a ser lida.

49

Captulo 1 Introduo ao PHP

Exemplo:
<?php
$rest = substr("Amrica",
echo $rest . "<br>\n";
$rest = substr("Amrica",
echo $rest . "<br>\n";
$rest = substr("Amrica",
echo $rest . "<br>\n";
$rest = substr("Amrica",
echo $rest . "<br>\n";
?>

1);
1, 3);
0, -1);
-2);


Resultado:
mrica
mr
Amric
ca

strpad
Preenche uma string com outra string, dentro de um tamanho especfico.
string str_pad ( string entrada, int tamanho [, string complemento [, int tipo]])

Parmetros
entrada
tamanho
complemento
tipo

Descrio
String inicial a ser complementada.
Comprimento da string a ser retornada.
String de preenchimento.
Tipo de preenchimento. Pode ser STR_PAD_RIGHT (preenche com caracteres
direita), STR_PAD_LEFT (preenche esquerda) ou STR_PAD_BOTH (preenche em
ambos os lados).

Exemplo:
<?php
$texto = "The Beatles";
print str_pad($texto, 20)
print str_pad($texto, 20,
print str_pad($texto, 20,
print str_pad($texto, 20,
?>


Resultado:
The Beatles
*********The Beatles
****The Beatles*****
The Beatles*********

. "<br>\n";
"*", STR_PAD_LEFT) . "<br>\n";
"*", STR_PAD_BOTH) . "<br>\n";
"*") . "<br>\n";

50

Criando Relatrios com PHP

str_repeat
Repete uma string certa quantidade de vezes.
string str_repeat (string entrada, int quantidade)

Parmetros
entrada
quantidade

Descrio
String inicial a ser repetida.
Quantidade de repeties.

Exemplo:
<?php
$txt = ".oO0Oo.";
print str_repeat($txt, 5) . "\n";
?>


Resultado:
.oO0Oo..oO0Oo..oO0Oo..oO0Oo..oO0Oo.

strlen
Retorna o comprimento de uma string.
int strlen (string entrada)

Parmetros
entrada

Descrio
String a ser calculado o comprimento.

Exemplo:
<?php
$txt = "O Rato roeu a roupa do rei de roma";
print 'O comprimento : ' . strlen($txt) . "\n";
?>


Resultado:
O comprimento : 34

str_replace
Substitui uma string por outra em um dado contexto.
mixed str_replace (mixed procura, mixed substitui, mixed contexto)

Parmetros
procura
substitui
contexto

Descrio
String a ser substituda
String substituta.
String inicial a ser submetida substituio.

51

Captulo 1 Introduo ao PHP

Exemplo:
<?php
$txt = "O Rato roeu a roupa do rei de roma";
print str_replace('Rato', 'Leo', $txt);
?>


Resultado:
O Leo roeu a roupa do rei de roma

Manipulao de arrays
A manipulao de arrays no PHP , sem dvida, um dos recursos mais poderosos
da linguagem. O programador que assimilar bem essa parte, ter muito mais produtividade no seu dia a dia. Isso porque os arrays no PHP servem como verdadeiros
contineres, servindo para armazenar nmeros, strings, objetos, entre outros, de
forma dinmica. Alm disso, o PHP nos oferece uma gama enorme de funes para
manipul-los, vistas a seguir.

Criando um array
Arrays so acessados por meio de uma posio, como um ndice numrico. Para criar
um array, podemos utilizar a funo array([chave =>] valor , ... ).
$cores = array('vermelho', 'azul', 'verde', 'amarelo');

ou
$cores = array(0=>'vermelho', 1=>'azul', 2=>'verde', 3=>'amarelo');

Outra forma de criar um array simplesmente lhe adicionando valores por meio da
seguinte sintaxe:
$nomes[]
$nomes[]
$nomes[]
$nomes[]

=
=
=
=

'maria';
'joo';
'carlos';
'jos';

De qualquer forma, para acessar o array indexado, basta indicar seu ndice entre
colchetes:
echo
echo
echo
echo

$cores[0];
$cores[1];
$cores[2];
$cores[3];

echo $nomes[0];
echo $nomes[1];

//
//
//
//

resultado
resultado
resultado
resultado

=
=
=
=

vermelho
azul
verde
amarelo

// resultado = maria
// resultado = joo

52

Criando Relatrios com PHP


echo $nomes[2];
echo $nomes[3];

// resultado = carlos
// resultado = jos

Arrays associativos
Os arrays no PHP so associativos, pois contm uma chave de acesso para cada
posio. Para criar um array, podemos utilizar a funo array([chave =>] valor , ... ).
$cores = array('vermelho' => 'FF0000', 'azul' => '0000FF', 'verde' => '00FF00');

Outra forma de criar um array associativo simplesmente lhe adicionando valores


por meio da seguinte sintaxe:
$pessoa['nome']
$pessoa['rua']
$pessoa['bairro']
$pessoa['cidade']

=
=
=
=

'Maria da Silva';
'So Joo';
'Cidade Alta';
'Porto Alegre';

De qualquer forma, para acessar o array, basta indicar sua chave entre colchetes:
echo $cores['vermelho']; // resultado = FF0000
echo $cores['azul']; // resultado = 0000FF
echo $cores['verde']; // resultado = 00FF00
echo
echo
echo
echo

$pessoa['nome'];
$pessoa['rua'];
$pessoa['bairro'];
$pessoa['cidade'];

//
//
//
//

resultado
resultado
resultado
resultado

=
=
=
=

Maria da Silva
So Joo
Cidade Alta
Porto Alegre

Obs.: A chave pode ser string ou integer. J o valor pode ser de qualquer tipo.

Iteraes
Os arrays podem ser iterados no PHP por meio do operador FOREACH, percorrendo
cada uma das posies do array. Veja:
$frutas['cor']
= 'vermelha';
$frutas['sabor'] = 'doce';
$frutas['formato'] = 'redonda';
$frutas['nome']
= 'ma';
foreach ($frutas as $chave => $fruta) {
echo "$chave => $fruta <br>\n";
}


Resultado:
cor => vermelha
sabor => doce
formato => redonda
nome => ma

Captulo 1 Introduo ao PHP

53

Acesso
As posies de um array podem ser acessadas a qualquer momento e sobre estas,
operaes podem ser realizadas.
<?php
$minha_multa['carro'] = 'Plio';
$minha_multa['valor'] = 178.00;
// alterao de valores
$minha_multa['carro'] .= ' ED 1.0';
$minha_multa['valor'] += 20;
// exibe o array
var_dump($minha_multa);
$comidas[] = 'Lazanha';
$comidas[] = 'Pizza';
$comidas[] = 'Macarro';
// alterao de valores
$comidas[1] = 'Pizza Calabreza';
// exibe o array
var_dump($comidas);
?>


Resultado:
array(2) {
["carro"]=>
string(12) "Plio ED 1.0"
["valor"]=>
float(198)
}
array(3) {
[0]=>
string(7) "Lazanha"
[1]=>
string(15) "Pizza Calabreza"
[2]=>
string(8) "Macarro"
}

54

Criando Relatrios com PHP

Arrays multidimensionais
Arrays multidimensionais ou matrizes so arrays nos quais algumas de suas posies
podem conter outros arrays de forma recursiva. Um array multidimensional pode ser
criado por meio da funo array:
<?php
$carros = array('Palio' => array('cor'=>'azul',
'potncia'=>'1.0',
'opcionais'=>'Ar Cond.'),
'Corsa' => array('cor'=>'cinza',
'potncia'=>'1.3',
'opcionais'=>'MP3'),
'Gol' => array('cor'=>'branco',
'potncia' => '1.0',
'opcionais' => 'Metalica')
);
echo $carros['Palio']['opcionais']; // resultado = Ar Cond.
?>

Outra forma de criar um array multidimensional simplesmente lhe atribuindo


valores, utilizando os ndices entre colchetes:
<?php
$carros['Palio']['cor']
$carros['Palio']['potncia']
$carros['Palio']['opcionais']
$carros['Corsa']['cor']
$carros['Corsa']['potncia']
$carros['Corsa']['opcionais']
$carros['Gol']['cor']
$carros['Gol']['potncia']
$carros['Gol']['opcionais']

=
=
=
=
=
=
=
=
=

'azul';
'1.0';
'Ar Cond.';
'cinza';
'1.3';
'MP3';
'branco';
'1.0';
'Metalica';

echo $carros['Palio']['opcionais']; // resultado = Ar Cond.


?>

Para realizar iteraes em um array multidimensional, precisamos observar quantos


nveis ele tem. No exemplo seguinte, realizamos uma iterao para o primeiro nvel
do array (veculos), e para cada iterao, realizamos uma nova, para imprimir suas
caractersticas.
<?php
foreach ($carros as $modelo => $caracteristicas)
{
echo "=> modelo $modelo <br>\n";
foreach ($caracteristicas as $caracteristica => $valor)

Captulo 1 Introduo ao PHP


{

}
}
?>

55

echo "caracterstica $caracteristica => $valor <br>\n";


Resultado:
=> modelo Palio
caracterstica cor => azul
caracterstica potncia => 1.0
caracterstica opcionais => Ar Cond.
=> modelo Corsa
caracterstica cor => cinza
caracterstica potncia => 1.3
caracterstica opcionais => MP3
=> modelo Gol
caracterstica cor => branco
caracterstica potncia => 1.0
caracterstica opcionais => Metalica

Funes
A seguir, veremos algumas funes utilizadas para manipular arrays.

array_keys
Retorna as chaves (ndices) de um array. Se o segundo parmetro for indicado, a funo retornar apenas ndices que apontam para um contedo igual ao do parmetro.
array array_keys (array array [, mixed valor_procurado])

Parmetros
array
valor_procurado

Descrio
Array do qual desejamos descobrir os ndices.
Parmetro opcional. Se preenchido, retornar apenas ndices contendo
esse valor.

Exemplo:
<?php
$exemplo = array('cor' => 'vermelho', 'volume' => 5, 'animal' => 'cachorro');
$indices = array_keys($exemplo);
print_r($indices);
?>


Resultado:
Array
(

56

Criando Relatrios com PHP





)

[0] => cor


[1] => volume
[2] => animal

array_values
Retorna um array contendo os valores de outro array.
array array_values (array array)

Parmetros
array

Descrio
Array do qual desejamos descobrir os valores.

Exemplo:
<?php
$exemplo = array('cor' => 'vermelho', 'volume' => 5, 'animal' => 'cachorro');
$valores = array_values($exemplo);
print_r($valores);
?>


Resultado:
Array
(
[0] => vermelho
[1] => 5
[2] => cachorro
)

count
Retorna a quantidade de elementos de um array.
int count (array array)

Parmetro
array

Descrio
Array a ser contado seus elementos.

Exemplo:
<?php
$a = array('refrigerante', 'cerveja', 'vodka', 'suco natural');
echo 'o array $a contm ' . count($a) . ' posies';
?>


Resultado:
o array $a contm 4 posies

Captulo 1 Introduo ao PHP

in_array
Verifica se um array contm um determinado valor.
boolean in_array (mixed valor, array array)

Parmetro
valor
array

Descrio
Valor a ser procurado.
Array a ser vasculhado.

Exemplo:
<?php
$a = array('refrigerante', 'cerveja', 'vodka', 'suco natural');
if (in_array('suco natural', $a))
{
echo 'suco natural encontrado';
}
?>


Resultado:
suco natural encontrado

sort
Ordena um array pelo seu valor, no mantendo a associao de ndices.
boolean sort (array array)

Parmetro
array

Descrio
Array a ser ordenado.

Exemplo:
<?php
$a = array('refrigerante', 'cerveja', 'vodka', 'suco natural');
sort($a);
print_r($a);
?>


Resultado:
Array
(
[0]
[1]
[2]
[3]
)

=>
=>
=>
=>

cerveja
refrigerante
suco natural
vodka

57

58

Criando Relatrios com PHP

explode
Converte uma string em um array, separando os elementos por meio de um separador.
array explode (string separador, string expresso)

Parmetros
separador
expresso

Descrio
Caractere que ser utilizado para desmembrar a string, convertendo-a em
um array.
String que desejamos converter em array.

Exemplo:
<?php
$string = "31/12/2004";
var_dump(explode("/", $string));
?>


Resultado:
array(3) {
[0]=>
string(2) "31"
[1]=>
string(2) "12"
[2]=>
string(4) "2004"
}

implode
Converte um array em uma string, separando os elementos do array por meio de
um separador.
array implode (string separador, array vetor)

Parmetros
separador
vetor

Descrio
Caractere que ser utilizado para delimitar a nova string criada.
Array original que desejamos converter em string.

Exemplo:
<?php
$padrao = array('Maria', 'Paulo', 'Jos');
$resultado = implode(' + ', $padrao);
var_dump($resultado);
?>


Resultado:
string(20) "Maria + Paulo + Jos"

Anda mungkin juga menyukai