Sie sind auf Seite 1von 72

UNIVERSIDADE FEDERAL DE SERGIPE CCET - CENTRO DE CINCIAS EXATAS E TECNOLOGIA DCCE - DEPARTAMENTO DE CINCIA DA COMPUTAO E ESTATSTICA

Tutorial da linguagem PHP


por Maurcio Vivas de Souza Barreto mauricio@vivas.com.br vivas@usa.net

Projeto Supervisionado

Professor Orientador:

Giovanny Lucero

UNIVERSIDADE FEDERAL DE SERGIPE


DEPARTAMENTO DE ESTATSTICA E INFORMTICA CENTRO DE CINCIAS EXATAS E TECNOLOGIA

Submetido a uma banca examinadora composta por:

Projeto de Final de Curso

________________________________________ Professor Giovanny Lucero

________________________________________ Professora Ana Rosimere

________________________________________ Professor Leonardo Nogueira Matos

ii

Agradecimentos

J J J J J J J J

A Giovanny, por ter acreditado no projeto e aceitado o desafio de realiz-lo em to pouco tempo; A Ana Rosimere, pela ajuda que sempre deu durante todo o curso; A minha me, SEMPRE! Aos professores do DCCE, pelo conhecimento que me transmitiram; A Mnica e Calliandra, tambm pelo incentivo, principalmente enquanto ainda estavam no curso; A Marina, por existir; A meus amigos, porque o so; A Shi eu no vou agradecer, s pra ser do contra! J

iii

ndice
NDICE ......................................................................................................................... IV 1. INTRODUO ........................................................................................................... 1

O QUE PHP?...................................................................................... 1 O QUE PODE SER FEITO COM PHP? ........................................................ 1 COMO SURGIU A LINGUAGEM PHP? ...................................................... 2
2. SINTAXE BSICA ..................................................................................................... 3

3. CRIANDO OS PRIMEIROS SCRIPTS.................................................................... 6

DELIMITANDO O CDIGO PHP .............................................................. 3 SEPARADOR DE INSTRUES ................................................................. 3 NOMES DE VARIVEIS .......................................................................... 4 COMENTRIOS ..................................................................................... 4 Comentrios de uma linha:.............................................................. 4 Comentrios de mais de uma linha:................................................. 4 PRIMEIRO EXEMPLO ............................................................................. 6 UTILIZANDO FORMULRIOS HTML ...................................................... 7 INTERAGINDO COM O BROWSER ............................................................ 8 ACESSANDO BANCOS DE DADOS .......................................................... 9 Conexo com o servidor .................................................................. 9 Seleo do banco de dados............................................................ 10 Execuo de queries SQL .............................................................. 11 Tratamento de resultados de query SELECT ................................. 12 TIPOS SUPORTADOS............................................................................ 14 Inteiros (integer ou long)............................................................... 14 Nmeros em Ponto Flutuante (double ou float).............................. 15 Strings........................................................................................... 15 Arrays ........................................................................................... 16 Objetos.......................................................................................... 18 Booleanos ..................................................................................... 18 TRANSFORMAO DE TIPOS ................................................................ 18 Coeres ....................................................................................... 18 Transformao explcita de tipos................................................... 19 Com a funo settype .................................................................... 20 CONSTANTES PR-DEFINIDAS .............................................................. 21 DEFININDO CONSTANTES .................................................................... 21
Listas .............................................................................................................................. 17

4. TIPOS ......................................................................................................................... 14

5. CONSTANTES .......................................................................................................... 21

6. OPERADORES ......................................................................................................... 22

ARITMTICOS ..................................................................................... 22 DE STRINGS ........................................................................................ 22 DE ATRIBUIO .................................................................................. 22 BIT A BIT ............................................................................................ 23 iv

LGICOS ............................................................................................ 23 COMPARAO.................................................................................... 24 EXPRESSO CONDICIONAL .................................................................. 24 DE INCREMENTO E DECREMENTO ......................................................... 24 ORDEM DE PRECEDNCIA DOS OPERADORES ........................................ 25
7. ESTRUTURAS DE CONTROLE ............................................................................ 26

8. FUNES.................................................................................................................. 35

BLOCOS ............................................................................................. 26 COMANDOS DE SELEO .................................................................... 26 if.................................................................................................... 27 switch............................................................................................ 29 COMANDOS DE REPETIO .................................................................. 31 while ............................................................................................. 31 do... while...................................................................................... 31 for ................................................................................................. 32 QUEBRA DE FLUXO ............................................................................. 33 Break............................................................................................. 33 Continue........................................................................................ 33 DEFININDO FUNES .......................................................................... 35 VALOR DE RETORNO........................................................................... 35 ARGUMENTOS .................................................................................... 36 Passagem de parmetros por referncia........................................ 36 Argumentos com valores pr-definidos (default)............................ 37 CONTEXTO ......................................................................................... 38 ESCOPO ............................................................................................. 38

9. VARIVEIS............................................................................................................... 40

10. CLASSES E OBJETOS .......................................................................................... 45

O MODIFICADOR STATIC ..................................................................... 40 VARIVEIS VARIVEIS ....................................................................... 41 VARIVEIS ENVIADAS PELO NAVEGADOR ............................................ 41 URLencode.................................................................................... 42 VARIVEIS DE AMBIENTE ................................................................... 42 VERIFICANDO O TIPO DE UMA VARIVEL ............................................. 42 Funo que retorna o tipo da varivel........................................... 43 Funes que testam o tipo da varivel ........................................... 43 DESTRUINDO UMA VARIVEL ............................................................. 43 VERIFICANDO SE UMA VARIVEL POSSUI UM VALOR ............................ 44 A funo isset ................................................................................ 44 A funo empty.............................................................................. 44 CLASSE .............................................................................................. 45 OBJETO .............................................................................................. 45 A VARIVEL $THIS ............................................................................. 45 SUBCLASSES ...................................................................................... 46 CONSTRUTORES ................................................................................. 46

12. CONCLUSES ....................................................................................................... 48 13. BIBLIOGRAFIA E REFERNCIAS .................................................................... 49

APNDICE 01 - FUNES PARA TRATAMENTO DE STRINGS ...................... 50

APNDICE 02 - FUNES PARA TRATAMENTO DE ARRAYS ....................... 58

FUNES RELACIONADAS A HTML .................................................... 50 htmlspecialchars ........................................................................... 50 htmlentities.................................................................................... 50 nl2br ............................................................................................. 50 get_meta_tags ............................................................................... 51 strip_tags ...................................................................................... 51 urlencode ...................................................................................... 51 urldecode ...................................................................................... 52 FUNES RELACIONADAS A ARRAYS ................................................... 52 Implode e join ............................................................................... 52 split ............................................................................................... 52 explode.......................................................................................... 53 COMPARAES ENTRE STRINGS .......................................................... 53 similar_text ................................................................................... 53 strcasecmp .................................................................................... 53 strcmp ........................................................................................... 53 strstr.............................................................................................. 54 stristr............................................................................................. 54 strpos ............................................................................................ 54 strrpos........................................................................................... 54 FUNES PARA EDIO DE STRINGS .................................................... 55 chop .............................................................................................. 55 ltrim .............................................................................................. 55 trim ............................................................................................... 55 strrev............................................................................................. 55 strtolower...................................................................................... 56 strtoupper...................................................................................... 56 ucfirst............................................................................................ 56 ucwords......................................................................................... 56 str_replace .................................................................................... 57 FUNES DIVERSAS ............................................................................ 57 chr................................................................................................. 57 ord ................................................................................................ 57 echo .............................................................................................. 57 print .............................................................................................. 57 strlen............................................................................................. 57 FUNES GENRICAS ......................................................................... 58 Array............................................................................................. 58 range............................................................................................. 58 shuffle ........................................................................................... 59 sizeof ............................................................................................. 59 FUNES DE NAVEGAO ............................................................... 59 reset .............................................................................................. 59 end ................................................................................................ 59 next ............................................................................................... 60 prev............................................................................................... 60 pos ................................................................................................ 60 vi

key................................................................................................. 60 each .............................................................................................. 60 FUNES DE ORDENAO ................................................................... 61 sort................................................................................................ 61 rsort .............................................................................................. 61 asort.............................................................................................. 62 arsort ............................................................................................ 62 ksort .............................................................................................. 62 usort.............................................................................................. 62 uasort............................................................................................ 62 uksort ............................................................................................ 63

vii

Resumo
O presente trabalho tem por objetivo relatar as atividades desenvolvidas durante a realizao do projeto supervisionado do aluno Maurcio Vivas de Souza Barreto, orientado pelo professor Giovanny Lucero. linguagem de script voltada para a construo de home-pages dinmicas, que desenvolvida uma aplicao, como exemplo da utilizao da linguagem PHP. O projeto consistiu numa pesquisa sobre a linguagem PHP uma

executada no servidor http. Para a complementao do estudo sobre a linguagem foi A aplicao desenvolvida trata-se do preenchimento do formulrio para a

GED Gratificao de Estmulo Docncia. Atravs do sistema desenvolvido, navegador http, e ao final do perodo poder imprimir o formulrio preenchido.

qualquer usurio cadastrado poder preencher os formulrios do GED atravs de um

viii

1. Introduo
O que PHP? PHP uma linguagem que permite criar sites WEB dinmicos,

possibilitando uma interao com o usurio atravs de formulrios, parmetros da URL

e links. A diferena de PHP com relao a linguagens semelhantes a Javascript que o cdigo PHP executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira possvel interagir com bancos de dados e aplicaes existentes no

servidor, com a vantagem de no expor o cdigo fonte para o cliente. Isso pode ser til confidencial. cdigo PHP fica embutido no prprio HTML, enquanto no outro caso necessrio que o script CGI gere todo o cdigo HTML, ou leia de um outro arquivo. O que diferencia PHP de um script CGI escrito em C ou Perl que o

quando o programa est lidando com senhas ou qualquer tipo de informao

O que pode ser feito com PHP?

Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita tambm com PHP, como coletar dados de um formulrio, gerar pginas dinamicamente ou enviar e receber cookies. PHP tambm tem como uma das caractersticas mais importantes o

suporte a um grande nmero de bancos de dados, como dBase, Interbase, mSQL, um banco de dados torna-se uma tarefa extremamente simples com PHP.

mySQL, Oracle, Sybase, PostgreSQL e vrios outros. Construir uma pgina baseada em Alm disso, PHP tem suporte a outros servios atravs de protocolos

como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda possvel abrir sockets e interagir com outros protocolos.

Como surgiu a linguagem PHP? A linguagem PHP foi concebida durante o outono de 1994 por Rasmus

Lerdorf. As primeiras verses no foram disponibilizadas, tendo sido utilizadas em sua sendo feitas. A primeira verso utilizada por outras pessoas foi disponibilizada em 1995,

home-page apenas para que ele pudesse ter informaes sobre as visitas que estavam e ficou conhecida como Personal Home Page Tools (ferramentas para pgina pessoal). Era composta por um sistema bastante simples que interpretava algumas macros e alguns utilitrios que rodavam por trs das home-pages: um livro de visitas, um contador e algumas outras coisas. Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o FI veio de um outro pacote escrito por Rasmus que interpretava dados de formulrios HTML (Form Interpreter). Ele combinou os scripts do pacote Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que cresceu bastante, e as pessoas passaram a contribuir com o projeto. Estima-se que em 1996 PHP/FI estava sendo usado por cerca de 15.000 sites pelo mundo, e em meados de 1997 esse nmero subiu para mais de 50.000. Nessa de Rasmus com contribuies de outras pessoas para ter uma equipe de Andi Gutmans, e esse novo interpretador foi a base para a verso 3. est sendo desenvolvida a verso 4 do PHP. poca houve uma mudana no desenvolvimento do PHP. Ele deixou de ser um projeto desenvolvimento mais organizada. O interpretador foi reescrito por Zeev Suraski e Atualmente o uso do PHP3 vem crescendo numa velocidade incrvel, e j

2. Sintaxe Bsica

Delimitando o cdigo PHP O cdigo PHP fica embutido no prprio HTML. O interpretador identifica

quando um cdigo PHP pelas seguintes tags:


<?php comandos ?> <script language=php> comandos </script> <? comandos ?> <% comandos %>

abreviao do primeiro. Para utiliz-lo, necessrio habilitar a opo short-tags na acostumados sintaxe de ASP. Para utiliz-lo tambm necessrio habilit-lo no PHP, atravs do arquivo de configurao php.ini.

O tipo de tags mais utilizado o terceiro, que consiste em uma

configurao do PHP. O ltimo tipo serve para facilitar o uso por programadores

Separador de instrues Entre cada instruo em PHP preciso utilizar o ponto-e-vrgula, assim

como em C, Perl e outras linguagens mais conhecidas. Na ltima instruo do bloco de se o uso sempre.

script no necessrio o uso do ponto-e-vrgula, mas por questes estticas recomenda-

Nomes de variveis Toda varivel em PHP tem seu nome composto pelo caracter $ e uma

string, que deve iniciar por uma letra ou o caracter _. PHP case sensitive, ou seja,

as variveis $vivas e $VIVAS so diferentes. Por isso preciso ter muito cuidado ao definir os nomes das variveis. bom evitar os nomes em maisculas, pois como veremos mais adiante, o PHP j possui alguma variveis pr-definidas cujos nomes so formados por letras maisculas.

Comentrios H dois tipos de comentrios em cdigo PHP:

Comentrios de uma linha: Marca como comentrio at o final da linha ou at o final do bloco de

cdigo PHP o que vier antes. Pode ser delimitado pelo caracter # ou por duas barras ( // ).

Exemplo: <? echo teste; #isto um teste ?> <? echo teste; //este teste similar ao anterior ?>

Comentrios de mais de uma linha:


*/ para o final do comentrio. Se o delimitador de final de cdigo PHP ( ?> )

Tem como delimitadores os caracteres /* para o incio do bloco e

estiver dentro de um comentrio, no ser reconhecido pelo interpretador.

Exemplos: <? echo teste; /* Isto um comentrio com mais de uma linha, mas no funciona corretamente ?> */ <? echo teste; /* Isto um comentrio com mais de uma linha que funciona corretamente */ ?>

3. Criando os primeiros scripts


Primeiro Exemplo Neste exemplo, criaremos um script com uma sada simples, que servir

para testar se a instalao foi feita corretamente:

<html> <head><title>Aprendendo PHP</title></head> <body> <?php echo "Primeiro Script"; ?> </body> </html>

Apache (ou o Web Server escolhido). Abra uma janela do navegador e digite o endereo
http://localhost/primeiro.php3. Verificando o cdigo fonte da pgina

Salve o arquivo como primeiro.php3 no diretorio de documentos do

exibida, temos o seguinte:

<html> <head><title>Aprendendo PHP</title></head> <body> Primeiro Script </body> </html>

ficando disponvel para o usurio apenas o resultado. Agora vamos escrever um script que produza exatamente o mesmo resultado utilizando uma varivel:

Isso mostra como o PHP funciona. O script executado no servidor,

<html> <head><title>Aprendendo PHP</title></head> <body> <?php $texto = "Primeiro Script"; echo $texto; ?> </body> </html>

Utilizando formulrios HTML Ao clicar num boto Submit em um formulrio HTML as informaes

dos campos sero enviadas ao servidor especificado para que possa ser produzida uma

resposta. O PHP trata esses valores como variveis, cujo nome o nome do campo definido no formulrio. O exemplo a seguir mostra isso, e mostra tambm como o cdigo PHP pode ser inserido em qualquer parte do cdigo HTML:
<html> <head><title>Aprendendo PHP</title></head> <body> <?php if ($texto != "") echo "Voc digitou \"$texto\"<br><br>"; ?> <form method=post action="<? echo $PATH_INFO; ?>"> <input type="text" name="texto" value="" size=10> <br> <input type="submit" name="sub" value="Enviar!"> </form> </body> </html>

um formulrio que contm um espao para digitar o texto, como visto na figura 01. Ao digitar um texto qualquer e submeter o formulrio, a resposta, que o mesmo arquivo como na figura 02: 7 PHP (indicado pela constante $PATH_INFO, que retorna o nome do arquivo) ser

Ao salvar o arquivo acima e carreg-lo no browser, o usurio ver apenas

figura 01

figura 02

Inicialmente ele uma string vazia, e por isso nada impresso na primeira parte.

Isso ocorre porque o cdigo PHP testa o contedo da varivel $texto.

Quando algum texto digitado no formulrio e submetido, o PHP passa a trat-lo como uma varivel. Como no formulrio o campo possui o nome texto, a varivel com seu string vazia, e o PHP imprime um texto antes do formulrio. contedo ser $texto. Assim, no prximo teste o valor da varivel ser diferente de uma

Interagindo com o browser tambm informaes

PHP

permite

interagir

com

do

browser

automaticamente. Por exemplo, o script a seguir mostra informaes sobre o browser do usurio. As figuras 03 e 04 mostram o resultado visto no Netscape Communicator e o Microsoft Internet Explorer, respectivamente.
<html> <head><title>Aprendendo PHP</title></head> <body> <? echo $HTTP_USER_AGENT; ?> </body> </html>

figura 03

figura 04

verso, e no caso do Communicator at o idioma (en). Com isso, se voc criar uma pgina com recursos disponveis somente no Internet Explorer, por exemplo, pode esconder o cdigo dos outros browsers, com um cdigo semelhante ao seguinte:
<html> <head><title>Aprendendo PHP</title></head> <body> <?

Observe que o resultado mostra caractersticas de cada browser, como a

if

(strpos($HTTP_USER_AGENT,"MSIE 5") != 0) { echo "Voc usa Internet Explorer"; } else { echo "Voc no usa Internet Explorer"; } ?> </body> </html>

utilizado o Microsoft Internet Explorer ou no, mas para outras funes poderia ser utilizado algo semelhante.
strpos(string1,string2). Essa funo retorna a posio da primeira apario de

Neste exemplo, ser apenas exibido um texto informando se est sendo

bom notar o surgimento de mais uma funo no cdigo anterior:

string2 em string1, contando a partir de zero, e no retorna valor algum se no ocorrer. testar se strpos devolve algum valor.

Assim, para testar se a string $HTTP_USER_AGENT contm a string MSIE, basta

Acessando Bancos de Dados Neste documento todos os exemplos referentes a acesso de bancos de dados utilizaro o gerenciador de banco de dados MySQL, que pode ser copiado gratuitamente no site http://www.mysql.org. Para interagir com uma base de dados SQL existem trs comandos

bsicos que devem ser utilizados: um que faz a conexo com o servidor de banco de dados, um que seleciona a base de dados a ser utilizada e um terceiro que executa uma query SQL.

Conexo com o servidor atravs do comando mysql_connect, que tem a seguinte sintaxe: A conexo com o servidor de banco de dados mySQL em PHP feita

int mysql_connect(string /*host [:porta]*/ , string /*login*/ , string /*senha*/ );

do usurio (login) e a senha para a conexo. A funo retorna um valor inteiro, que o utilizado depois. No nosso exemplo, temos como servidor de banco de dados a mesma mquina que roda o servidor http, como login o usurio root e senha phppwd:
$conexao = mysql_connect(localhost, root, phppwd);

Os parmetros so bastante simples: o endereo do servidor(host), o nome

identificador da conexo estabelecida e dever ser armazenado numa varivel para ser

especificado que possua o usurio com a senha fornecida), o identificador da conexo fica armazenado na varivel $conexo.

Assim, se a conexo for bem sucedida (existir um servidor no endereo

Seleo do banco de dados servidor com o qual desejamos trabalhar. Isso feito atravs da funo int
mysql_select_db, que possui a seguinte sintaxe: int mysql_select_db(string /*nome_base*/, int /*conexao*/ );

Uma vez conectado, preciso selecionar o banco de dados existente no

nome da base de dados a selecionar o primeiro parmetro fornecido, seguido pelo identificador da conexo. Se este for omitido, o interpretador PHP tentar utilizar a ltima conexo estabelecida. Recomenda-se sempre explicitar esse valor, para facilitar a nome ged:

O valor de retorno 0 se o comando falhar, e 1 em caso de sucesso. O

legibilidade do cdigo. No nosso exemplo, a base de dados a ser selecionada possui o

mysql_select_db(ged, $conexao);

conexo utilizar a base de dados selecionada.

Aps a execuo desse comando qualquer consulta executada para aquela

10

Execuo de queries SQL quase toda a interao com o servidor mySQL pode ser feita atravs de consultas escritas em SQL (Structured Query Language), com o comando mysql_query, que utiliza a seguinte sintaxe:
int mysql_query(string consulta, int [conexao] );

Aps estabelecida a conexo e selecionada a base de dados a ser utilizada,

significa que a consulta est sintaticamente correta e foi executada no servidor. resultado o esperado. No caso da consulta ser um comando SELECT, o valor de

O valor de retorno 0 se falhar ou 1 em caso de sucesso. Sucesso aqui

Nenhuma informao sobre o resultado retornada deste comando, ou at mesmo se o retorno um valor interno que identifica o resultado, que poder ser tratado com a

funo mysql_result() e outras. A string query no deve conter ponto-e-vrgula no como exemplo:
$cria = CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50)); mysql_query($cria, $conexao);

final do comando, e o identificador da conexo opcional. Vamos criar uma tabela

Agora vejamos como ficou o cdigo completo para executar uma query SQL numa base de dados mySQL, com um exemplo que cria uma tabela chamada exemplo e adiciona alguns dados:
$conexao = mysql_connect(localhost, root, phppwd); mysql_select_db(ged, $conexao); $cria = CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50)); $insere1 = INSERT INTO exemplo (Mauricio Vivas,vivas@usa.net); $insere2 = INSERT INTO exemplo (Jose da Silva,jose@teste.com); (nome,email) VALUES

(nome,email)

VALUES

$insere3 = INSERT INTO exemplo (nome,email) (Fernando Henrique Cardoso,fhc@planalto.gov.br); $insere4 = INSERT INTO exemplo (nome,email) (Bill Clinton,president@whitehouse.gov); mysql_query($cria, $conexao); mysql_query($insere1, $conexao);

VALUES

VALUES

11

mysql_query($insere2, $conexao); mysql_query($insere3, $conexao); mysql_query($insere4, $conexao);

Tratamento de resultados de query SELECT atravs

Ao

executar

uma

query

SQL

SELECT

do

comando

mysql_query, o identificador do resultado deve ser armazenado numa varivel que

pode ser tratada de diversas formas. Duas maneiras interessantes de faz-lo usam o comando mysql_result e o comando mysql_fetch_row, respectivamente. O comando mysql_result tem a seguinte sintaxe:

int [campo]);

mysql_result(int

resultado,

int

linha,

mixed

funo mysql_query, linha especifica a tupla a ser exibida, j que uma query SELECT

Onde resultado o identificador do resultado, obtido com o retorno da

pode retornar diversas tuplas, e campo o identificador do campo a ser exibido, sendo o tipo descrito como mixed pela possibilidade de ser de diversos tipos (neste caso, inteiro ou string). Vejamos um exemplo utilizando a tabela criada anteriormente:
$consulta = SELECT nome, email FROM exemplo WHERE email LIKE vivas; $resultado = mysql_query($consulta, $conexao); printf("Nome: ", mysql_result($resultado,0,"nome"), <br>\n); printf("e-mail: ", mysql_result($resultado,0,"email"),<br>);

Com o exemplo acima, o resultado ser:


Nome: Mauricio Vivas<br> e-mail: vivas@usa.net<br>

j que no caso de um resultado com vrias linhas preciso controlar o nmero de linhas

importante notar que a utilizao desta funo um pouco trabalhosa,

para trat-las (pode-se utilizar a funo mysql_num_rows(int resultado), que

retorna o nmero de linhas de um resultado), e no caso de uma alterao no nome do 12

campo preciso alterar tambm a maneira de trat-lo. Por isso mais aconselhvel que se use uma outra funo, como por exemplo mysql_fetch_row, que possui a seguinte sintaxe:

array mysql_fetch_row(int result);

como retorno da funo mysql_query. O resultado produzido por esta funo de retirar a primeira linha da memria de resultados, se houver, e coloc-la num array. Assim torna-se mais fcil tratar um resultado com vrias linhas, e sem utilizar os nomes dos campos na rotina de tratamento do resultado:

A varivel resultado o identificador da memria de resultados, obtido

$consulta = SELECT nome, email FROM exemplo; $resultado = mysql_query($consulta, $conexao); echo "<table border=1>\n"; echo "<tr><td>Nome</td><td>e-mail</tr>\n"; while ($linha = mysql_fetch_row($resultado)) { printf("<tr><td>$linha[0]</td>); printf("<td>$linha[1]</td></tr>); } echo "</table>\n";

tabela html. Se o programador desejar pular alguma(s) linha(s) do resultado, poder linha da memria de resultados a ser impressa. Sua sintaxe :

O cdigo acima ir imprimir todos os registros da tabela exemplo numa

utilizar a funo mysql_data_seek, que tem por objetivo definir qual ser a prxima

int mysql_data_seek(int resultado, int linha);

Sendo resultado o identificador do resultado e linha o numero da linha. Retorna 0 em caso de falha, e um valor diferente de zero em caso de sucesso. armazenam as linhas em arrays e objetos, assim como outras funes para administrar o tratar tpicos mais avanados. Existem diversas outras funes para o tratamento de resultados, que

banco de dados, mas como este documento trata-se de uma introduo, inicialmente no

13

4. Tipos
Tipos Suportados

PHP suporta os seguintes tipos de dados: Inteiro String Array Ponto flutuante

Objeto PHP utiliza checagem de tipos dinmica, ou seja, uma varivel pode

conter valores de diferentes tipos em diferentes momentos da execuo do script. Por

este motivo no necessrio declarar o tipo de uma varivel para us-la. O interpretador PHP decidir qual o tipo daquela varivel, verificando o contedo em tempo de execuo.

desejado, utilizando o typecasting ou a funo settype (ver adiante).

Ainda assim, permitido converter os valores de um tipo para outro

Inteiros (integer ou long) Uma varivel pode conter um valor inteiro com atribuies que sigam as seguintes sintaxes:

$vivas = 1234; # $vivas = -234; # $vivas = 0234; # # $vivas = 0x34; # #

inteiro positivo na base decimal inteiro negativo na base decimal inteiro na base octal-simbolizado pelo 0 equivale a 156 decimal inteiro na base hexadecimal(simbolizado pelo 0x) equivale a 52 decimal.

utilizados para armazenar a varivel. Como a escolha feita pelo interpretador PHP de maneira transparente para o usurio, podemos afirmar que os tipos so iguais.

A diferena entre inteiros simples e long est no nmero de bytes

14

Nmeros em Ponto Flutuante (double ou float) Uma varivel pode ter um valor em ponto flutuante com atribuies que sigam as seguintes sintaxes:

$vivas = 1.234; $vivas = 23e4; # equivale a 230.000

Strings Strings podem ser atribudas de duas maneiras: a) utilizando aspas simples ( ' ) Desta maneira, o valor da varivel ser exatamente o b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel ou caracter de escape ser expandido antes de ser atribudo. Exemplo:
<? $teste = "Mauricio"; $vivas = '---$teste--\n'; echo "$vivas"; ?>

texto contido entre as aspas (com exceo de \\ e \' ver tabela abaixo)

A sada desse script ser "---$teste--\n".

<? $teste = "Mauricio"; $vivas = "---$teste---\n"; echo "$vivas"; ?>

A sada desse script ser "---Mauricio--" (com uma quebra de linha no final).

15

A tabela seguinte lista os caracteres de escape: Sintaxe


\n \r \t \\ \$ \ \

Significado
Nova linha Retorno de carro (semelhante a \n) Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa dupla Aspa simples

No apndice 01 est disponvel uma lista das funes utilizadas no tratamento de strings.

Arrays

Arrays em PHP podem ser observados como mapeamentos ou como vetores indexados. Mais precisamente, um valor do tipo array um dicionrio onde os ndices so as chaves de acesso. Vale ressaltar que os ndices podem ser valores de no precisam formar um intervalo contnuo qualquer tipo e no somente inteiros. Inclusive, se os ndices forem todos inteiros, estes Como a checagem de tipos em PHP dinmica, valores de tipos

diferentes podem ser usados como ndices de array, assim como os valores mapeados tambm podem ser de diversos tipos.
Exemplo: <? $cor[1] = vermelho; $cor[2] = verde; $cor[3] = azul; $cor[teste] = 1; ?> Equivalentemente, pode-se escrever: <? $cor = array(1 => vermelho, 2 => verde, 3 => azul, teste => 1); ?>

16

Listas

Atravs de listas possvel atribuir valores que esto num array para variveis. Vejamos o exemplo:

As listas so utilizadas em PHP para realizar atribuies mltiplas.

Exemplo: list($a, $b, $c) = array(a, b, c);

bom notar que s so atribudos s variveis da lista os elementos do array que possuem ndices inteiros e no negativos. No exemplo acima as trs atribuies foram bem inteiros, a partir do zero. Um fator importante que cada varivel da lista possui um ndice inteiro e ordinal, iniciando com zero, que serve para determinar qual valor ser 2. Vejamos um outro exemplo:
$arr = array(1=>um,3=>tres,a=>letraA,2=>dois); list($a,$b,$c,$d) = $arr;

O comando acima atribui valores s trs variveis simultaneamente.

sucedidas porque ao inicializar um array sem especificar os ndices eles passam a ser

atribudo. No exemplo anterior temos $a com ndice 0, $b com ndice 1 e $c com ndice

Aps a execuo do cdigo acima temos os seguintes valores:


$a $b $c $d == == == == null um dois tres

no existe elemento com ndice 0 (zero). Outro detalhe importante que o valor tres

Devemos observar que varivel $a no foi atribudo valor, pois no array

foi atribudo varivel $d, e no a $b, pois seu ndice 3, o mesmo que $d na lista. Por ndice no inteiro.

fim, vemos que o valor letraA no foi atribudo a elemento algum da lista pois seu Os ndices da lista servem apenas como referncia ao interpretador PHP

para realizar as atribuies, no podendo ser acessados de maneira alguma pelo varivel, servindo apenas para fazer mltiplas atribuies atravs de um array.

programador. De maneira diferente do array, uma lista no pode ser atribuda a uma

17

No apndice 02 est disponvel uma lista das funes mais comuns para o tratamento de arrays. Objetos uma classe para uma varivel. Um objeto pode ser inicializado utilizando o comando new para instanciar

Exemplo: class teste { function nada() { echo nada; } } $vivas = new teste; $vivas -> nada();

A utilizao de objetos ser mais detalhada mais frente. Booleanos PHP no possui um tipo booleano, mas capaz de avaliar expresses e

retornar true ou false, atravs do tipo integer: usado o valor 0 (zero) para representar o estado false, e qualquer valor diferente de zero (geralmente 1) para representar o estado true.

Transformao de tipos A transformao de tipos em PHP pode ser feita das seguintes maneiras: Coeres Quando ocorrem determinadas operaes (+, por exemplo) entre dois valores de tipos diferentes, o PHP converte o valor de um deles automaticamente (coero). interessante notar que se o operando for uma varivel, seu valor no ser alterado.

18

determinado da seguinte forma: Se um dos operandos for float, o outro ser


integer.

O tipo para o qual os valores dos operandos sero convertidos

convertido para float, seno, se um deles for integer, o outro ser convertido para

Exemplo: $vivas = $vivas = $vivas = $vivas =

1; // $vivas a string 1 $vivas + 1; // $vivas o integer 2 $vivas + 3.7;// $vivas o double 5.7 1 + 1.5 // $vivas o double 2.5

Como podemos notar, o PHP converte string para integer ou


double mantendo o valor. O sistema utilizado pelo PHP para converter de strings para

nmeros o seguinte: -

analisado o incio da string. Se contiver um nmero, ele ser avaliado. Seno, o valor ser 0 (zero); O nmero pode conter um sinal no incio (+ ou -);

Se a string contiver um ponto em sua parte numrica a ser analisada, ele ser considerado, e o valor obtido ser double; Se a string contiver um e ou E em sua parte numrica a ser analisada, o valor seguinte ser considerado como expoente da base 10, e o valor obtido ser double;

Exemplos: $vivas = 1 $vivas = 1 $vivas = 1 $vivas = 1 $vivas = 1 $vivas = 1

+ + + + + +

10.5; // -1.3e3; // teste10.5; // 10testes; // " 10testes"; "+ 10testes";

$vivas == 11.5 $vivas == -1299 $vivas == 1 $vivas == 11 // $vivas == 11 // $vivas == 1

Transformao explcita de tipos A sintaxe do typecast de PHP semelhante ao C: basta escrever o tipo entre parenteses antes do valor

19

Exemplo: $vivas = $vivas = $vivas = $vivas =

15; (double) $vivas 3.9 (int) $vivas

// // // // //

$vivas integer (15) $vivas double (15.0) $vivas double (3.9) $vivas integer (3) o valor decimal truncado

Os tipos de cast permitidos so: (int), (integer)

(real), (double), (float) muda para float; (string) (array) (object)

muda para integer; muda para string; muda para array; muda para objeto.

Com a funo settype A funo settype converte uma varivel para o tipo especificado, que

pode ser integer, double, string, array ou object.


Exemplo: $vivas = 15; settype($vivas,double)

// $vivas integer // $vivas double

20

5. Constantes

Constantes pr-definidas O PHP possui algumas constantes pr-definidas, indicando a verso do

PHP, o Sistema Operacional do servidor, o arquivo em execuo, e diversas outras informaes. Para ter acesso a todas as constantes pr-definidas, pode-se utilizar a funo phpinfo(), que exibe uma tabela contendo todas as constantes pr-definidas, assim como configuraes da mquina, sistema operacional, servidor http e verso do PHP instalada.

Definindo constantes Para definir constantes utiliza-se a funo define. Uma vez definido, o

valor de uma constante no poder mais ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode conter nem um array nem um objeto. A assinatura da funo define a seguinte:

int define(string nome_da_constante, mixed valor);

utilizao a seguir:

A funo retorna true se for bem-sucedida. Veja um exemplo de sua

define ("pi", 3.1415926536); $circunf = 2*pi*$raio;

21

6. Operadores
Aritmticos S podem ser utilizados quando os operandos so nmeros (integer ou

float). Se forem de outro tipo, tero seus valores convertidos antes da realizao da operao.

+ * / %

adio

subtrao diviso

multiplicao mdulo

de strings S h um operador exclusivo para strings: . concatenao

de atribuio Existe um operador bsico de atribuio e diversos derivados. Sempre

retornam o valor atribudo. No caso dos operadores derivados de atribuio, a operao feita entre os dois operandos, sendo atribudo o resultado para o primeiro. A atribuio sempre por valor, e no por referncia.

22

= += -= *= /= %= .=

atribuio simples

atribuio com adio

atribuio com subtrao atribuio com diviso

atribuio com multiplicao atribuio com mdulo

atribuio com concatenao

Exemplo: $a = 7; $a += 2; // $a passa a conter o valor 9

bit a bit Comparam dois nmeros bit a bit. & | ^ ~ << >> Lgicos Utilizados para inteiros representando valores booleanos e lgico e lgico

ou lgico ou exclusivo no (inverso) shift left shift right

and or xor ! && ||

ou lgico ou exclusivo no (inverso) e lgico ou lgico

23

posies na ordem de precedncia.

Existem dois operadores para e e para ou porque eles tm diferentes

Comparao As comparaes so feitas entre os valores contidos nas variveis, e no

as referncias. Sempre retornam um valor booleano. == != < > <= >= igual a

diferente de menor que maior que menor ou igual a maior ou igual a

Expresso condicional Existe um operador de seleo que ternrio. Funciona assim:


(expressao1)?(expressao2):( expressao3)

expresso retorna o valor de expresso2. Seno, retorna o valor de expresso3.

o interpretador PHP avalia a primeira expresso. Se ela for verdadeira, a

de incremento e decremento

++ --

incremento decremento

24

utilizado antes, retorna o valor da varivel antes de increment-la ou decrement-la. Quando utilizado depois, retorna o valor da varivel j incrementado ou decrementado.
Exemplos: $a = $b = 10; // $a e $b recebem o valor 10 $c = $a++; // $c recebe 10 e $a passa a ter 11 $d = ++$b; // $d recebe 11, valor de $b j incrementado

Podem ser utilizados de duas formas: antes ou depois da varivel. Quando

Ordem de precedncia dos operadores A tabela a seguir mostra a ordem de precedncia dos operadores no Associatividade esquerda esquerda esquerda esquerda direita esquerda esquerda esquerda esquerda esquerda esquerda esquerda no associa no associa esquerda esquerda esquerda direita direita no associa , or xor and print = += -= *= /= .= %= &= != ~= <<= >>= ?: || && | ^ & == != < <= > >= << >> +-. */% ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new 25 Operadores

Precedncia 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.

momento de avaliar as expresses;

7. Estruturas de Controle
As estruturas que veremos a seguir so comuns para as linguagens de

programao imperativas, bastando, portanto, descrever a sintaxe de cada uma delas, resumindo o funcionamento.

Blocos relacion-los com determinado comando ou funo. Em comandos como if, for, Um bloco consiste de vrios comandos agrupados com o objetivo de

while, switch e em declaraes de funes blocos podem ser utilizados para permitir

que um comando faa parte do contexto desejado. Blocos em PHP so delimitados pelos caracteres { e }. A utilizao dos delimitadores de bloco em uma parte qualquer do algum, e ser tratada normalmente pelo interpretador.
Exemplo: if ($x == $y) comando1; comando2;

cdigo no relacionada com os comandos citados ou funes no produzir efeito

Para que comando2 esteja relacionado ao if preciso utilizar um bloco:


if ($x == $y){ comando1; comando2; }

Comandos de seleo Tambm chamados de condicionais, os comandos de seleo permitem executar comandos ou blocos de comandos com base em testes feitos durante a execuo.

26

if O mais trivial dos comandos condicionais o if. Ele testa a condio e executa o comando indicado se o resultado for true (valor diferente de zero). Ele possui duas sintaxes:
if (expresso) comando; if (expresso): comando; . . . comando; endif;

Para incluir mais de um comando no if da primeira sintaxe, preciso utilizar um bloco, demarcado por chaves. O else um complemento opcional para o if. Se utilizado, o comando

ser executado se a expresso retornar o valor false (zero). Suas duas sintaxes so:
if (expresso) comando; else comando; if (expresso): comando; . . . comando; else comando; . . . comando; endif;

A seguir, temos um exemplo do comando if utilizado com else:

27

if ($a > $b) $maior = $a; else $maior = $b;

O exemplo acima coloca em $maior o maior valor entre $a e $b Em determinadas situaes necessrio fazer mais de um teste, e executar condicionalmente diversos comandos ou blocos de comandos. Para facilitar o entendimento de uma estrutura do tipo:

if (expressao1) comando1; else if (expressao2) comando2; else if (expressao3) comando3; else comando4;

funo de um else e um if usados sequencialmente, como no exemplo acima. Num mesmo if podem ser utilizados diversos elseifs, ficando essa utilizao a critrio do programador, que deve zelar pela legibilidade de seu script. O comando elseif tambm pode ser utilizado com dois tipos de sintaxe. Em resumo, a sintaxe geral do comando if fica das seguintes maneiras:

foi criado o comando, tambm opcional elseif. Ele tem a mesma

if (expressao1) comando; [ elseif (expressao2) comando; ] [ else comando; ]

28

if (expressao1) : comando; . . . comando; [ elseif (expressao2) comando; . . . comando; ] [ else comando; . . . comando; ] endif;

switch O comando switch atua de maneira semelhante a uma srie de

comandos if na mesma expresso. Frequentemente o programador pode querer comparar uma varivel com diversos valores, e executar um cdigo diferente a depender de qual valor igual ao da varivel. Quando isso for necessrio, deve-se usar o mesma coisa, sendo que o primeiro utiliza uma srie de ifs e o segundo utiliza
switch:

comando switch. O exemplo seguinte mostra dois trechos de cdigo que fazem a

if ($i == 0) print i elseif ($i == print i elseif ($i == print i

igual a zero; 1) igual a um; 2) igual a dois;

switch ($i) { case 0: print i igual a zero; break; case 1: print i igual a um; break; case 2: print i igual a dois; break; }

importante compreender o funcionamento do switch para no cometer enganos. O comando switch testa linha a linha os cases encontrados, e a partir do 29

momento que encontra um valor igual ao da varivel testada, passa a executar todos os isso usa-se o comando break, quebrando o fluxo e fazendo com que o cdigo seja exemplo:

comandos seguintes, mesmo os que fazem parte de outro teste, at o fim do bloco. por executado da maneira desejada. Veremos mais sobre o break mais adiante. Veja o

switch ($i) { case 0: print i igual a zero; case 1: print i igual a um; case 2: print i igual a dois;

executados. Se $i for igual a 1, os dois ltimos print sero executados. O comando s funcionar da maneira desejada se $i for igual a 2. Em outras linguagens que implementam o comando switch, ou similar, os valores a serem testados s podem ser do tipo inteiro. Em PHP permitido usar valores do tipo string como elementos de teste do comando switch. O exemplo abaixo funciona perfeitamente:

No exemplo acima, se $i for igual a zero, os trs comandos print sero

switch ($s) { case casa: print A casa amarela; case arvore: print a rvore bonita; case lampada: print joao apagou a lampada;

30

comandos de repetio while condio e executa um comando, ou um bloco de comandos, at que a condio testada seja falsa. Assim como o if, o while tambm possui duas sintaxes alternativas:
while (<expressao>) <comando>; while (<expressao>): <comando>; . . . <comando>; endwhile;

O while o comando de repetio (lao) mais simples. Ele testa uma

alm do teste inicial. Se o valor da expresso passar a ser false no meio do bloco de avaliada como false, o bloco de comandos no ser executado. 1 a 10:
$i = 1; while ($i <=10) print $i++;

A expresso s testada a cada vez que o bloco de instrues termina,

instrues, a execuo segue at o final do bloco. Se no teste inicial a condio for O exemplo a seguir mostra o uso do while para imprimir os nmeros de

do... while O lao do..while funciona de maneira bastante semelhante ao while,

com a simples diferena que a expresso testada ao final do bloco de comandos. O lao do..while possui apenas uma sintaxe, que a seguinte:
do { <comando> . . . <comando> } while (<expressao>);

31

O exemplo utilizado para ilustrar o uso do while pode ser feito da seguinte maneira utilizando o do.. while:

$i = 0; do { print ++$i; } while ($i < 10);

for O tipo de lao mais complexo o for. Para os que programam em C,

C++ ou Java, a assimilao do funcionamento do for natural. Mas para aqueles que for. As duas sintaxes permitidas so:

esto acostumados a linguagens como Pascal, h uma grande mudana para o uso do

for (<inicializacao>;<condicao>;<incremento>) <comando>; for (<inicializacao>;<condicao>;<incremento>) : <comando>; . . . <comando>; endfor;

As trs expresses que ficam entre parnteses tm as seguintes finalidades: Inicializao: comando ou sequencia de comandos a serem realizados Condio: Expresso booleana que define se os comandos que esto

antes do inicio do lao. Serve para inicializar variveis.

dentro do lao sero executados ou no. Enquanto a expresso for verdadeira (valor diferente de zero) os comandos sero executados. Incremento: Comando executado ao final de cada execuo do lao.

Um comando for funciona de maneira semelhante a um while escrito da seguinte forma:

32

<inicializacao> while (<condicao>) { comandos ... <incremento> }

Quebra de fluxo

Break alm do uso j visto no comando switch. Ao encontrar um break dentro de um desses laos, o interpretador PHP para imediatamente a execuo do lao, seguindo normalmente o fluxo do script.
while ($x > 0) { ... if ($x == 20) { echo erro! x = 20; break; ... }

O comando break pode ser utilizado em laos de do, for e while,

trmino normal ($x <= 0), mas foi utilizado o break para o caso de um trmino no lao.

No trecho de cdigo acima, o lao while tem uma condio para seu

previsto no incio do lao. Assim o interpretador seguir para o comando seguinte ao

Continue O comando continue tambm deve ser utilizado no interior de laos, e

funciona de maneira semelhante ao break, com a diferena que o fluxo ao invs de sair do lao volta para o incio dele. Vejamos o exemplo:
for ($i = 0; $i < 100; $i++) { if ($i % 2) continue; echo $i ; }

33

pares entre 0 e 99. O que o lao faz testar se o resto da diviso entre o nmero e 2 0. Se for diferente de zero (valor lgico true) o interpretador encontrar um continue, para a prxima iterao.

O exemplo acima uma maneira ineficiente de imprimir os nmeros

que faz com que os comandos seguintes do interior do lao sejam ignorados, seguindo

34

8. Funes
Definindo funes A sintaxe bsica para definir uma funo :
function nome_da_funo([arg1, arg2, arg3]) { Comandos; ... ; [return <valor de retorno>]; }

funo. Como a checagem de tipos em PHP dinmica, o tipo de retorno no deve ser declarado, sendo necessrio que o programador esteja atento para que a funo retorne o e compreenso do cdigo. Para efeito de documentao, utiliza-se o seguinte formato de declarao de funo: tipo desejado. recomendvel que esteja tudo bem documentado para facilitar a leitura

Qualquer cdigo PHP vlido pode estar contido no interior de uma

tipo function nome_da_funcao(tipo arg1, tipo arg2, ...);

no aceita a declarao de tipos. Isso significa que em muitos casos o programador deve

Este formato s deve ser utilizado na documentao do script, pois o PHP

estar atento ao tipos dos valores passados como parmetros, pois se no for passado o tipo esperado no emitido nenhum alerta pelo interpretador PHP, j que este no testa os tipos.

Valor de retorno Toda funo pode opcionalmente retornar um valor, ou simplesmente No possvel que uma funo retorne mais de um valor, mas permitido

executar os comandos e no retornar valor algum.

fazer com que uma funo retorne um valor composto, como listas ou arrays.

35

Argumentos possvel passar argumentos para uma funo. Eles devem ser

declarados logo aps o nome da funo, entre parnteses, e tornam-se variveis pertencentes ao escopo local da funo. A declarao do tipo de cada argumento tambm utilizada apenas para efeito de documentao.
Exemplo: function imprime($texto){ echo $texto; } imprime(teste de funes);

Passagem de parmetros por referncia Normalmente, a passagem de parmetros em PHP feita por valor, ou

seja, se o contedo da varivel for alterado, essa alterao no afeta a varivel original.
Exemplo: function mais5($numero) { $numero += 5; } $a = 3; mais5($a); //$a continua valendo 3

mais5 intil, j que aps a execuo sair da funo o valor anterior da varivel valor. O que ocorre normalmente que ao ser chamada uma funo, o interpretador for passada como parmetro, seu contedo fica preservado, pois a funo ir trabalhar na verdade com uma cpia da varivel. Porm, se a passagem de parmetros for feita afetar a varivel que o contm.

No exemplo acima, como a passagem de parmetros por valor, a funo

recuperado. Se a passagem de valor fosse feita por referncia, a varivel $a teria 8 como salva todo o escopo atual, ou seja, os contedos das variveis. Se uma dessas variveis

por referncia, toda alterao que a funo realizar no valor passado como parmetro

36

passados por referncia: indicando isso na declarao da funo, o que faz com que a pasagem de parmetros sempre seja assim; e tambm na prpria chamada da funo. casos:
function mais5(&$num1, $num2) { $num1 += 5; $num2 += 5; } $a = $b = 1; mais5($a, $b); /* Neste caso, s $num1 ter seu valor alterado, pois a passagem por referncia est definida na declarao da funo. */ mais5($a, &$b); valores alterados. */ /* Aqui as duas variveis tero seus

H duas maneiras de fazer com que uma funo tenha parmetros

Nos dois casos utiliza-se o modificador &. Vejamos um exemplo que ilustra os dois

Argumentos com valores pr-definidos (default) Em PHP possvel ter valores default para argumentos de funes, ou

seja, valores que sero assumidos em caso de nada ser passado no lugar do argumento. da funo torna-se opcional.

Quando algum parmetro declarado desta maneira, a passagem do mesmo na chamada

function teste($vivas = testando) { echo $vivas; } teste(); // imprime testando teste(outro teste); // imprime outro teste

tem valor default deve ser declarado por ltimo:

bom lembrar que quando a funo tem mais de um parmetro, o que

function teste($figura = circulo, $cor) { echo a figura um , $figura, de cor $cor; } teste(azul);

37

/* A funo no vai funcionar da maneira esperada, ocorrendo um erro no interpretador. A declarao correta : */ function teste2($cor, $figura = circulo) { echo a figura um , $figura, de cor $cor; } teste2(azul); /* Aqui a funcao funciona da maneira esperada, ou seja, imprime o texto: a figura um crculo de cor azul */

Contexto determinado ponto do programa. Na chamada de uma funo, ao iniciar a execuo do bloco que contm a implementao da mesma criado um novo contexto, contendo as variveis declaradas dentro do bloco, ou seja, todas as variveis utilizadas dentro daquele bloco sero eliminadas ao trmino da execuo da funo. Escopo pode ser utilizada. Na maioria dos casos todas as variveis tm escopo global. O escopo de uma varivel em PHP define a poro do programa onde ela O contexto o conjunto de variveis e seus respectivos valores num

Entretanto, em funes definidas pelo usurio um escopo local criado. Uma varivel declarao.

de escopo global no pode ser utilizada no interior de uma funo sem que haja uma

Exemplo: $vivas = Testando; function Teste() { echo $vivas; } Teste();

escopo global, e no pode ser referida num escopo local, mesmo que no haja outra com nome igual que cubra a sua visibilidade. Para que o script funcione da forma desejada, a varivel global a ser utilizada deve ser declarada.

O trecho acima no produzir sada alguma, pois a varivel $vivas de

38

Exemplo: $vivas = Testando; function Teste() { global $vivas; echo $vivas; } Teste();

vrgulas. Uma outra maneira de acessar variveis de escopo global dentro de uma funo utilizando um array pr-definido pelo PHP cujo nome $GLOBALS. O ndice acima e o abaixo produzem o mesmo resultado:
Exemplo: $vivas = "Testando"; function Teste() { echo $GLOBALS["vivas"]; // imprime $vivas echo $vivas; // no imprime nada } Teste();

Uma declarao global pode conter vrias variveis, separadas por

para a varivel referida o proprio nome da varivel, sem o caracter $. O exemplo

39

9. Variveis
O modificador static Uma varivel esttica visvel num escopo local, mas ela inicializada

apenas uma vez e seu valor no perdido quando a execuo do script deixa esse escopo. Veja o seguinte exemplo:

function Teste() { $a = 0; echo $a; $a++; }

execuo da funo a varivel $a perde seu valor. J no exemplo seguinte, a cada chamada da funo a varivel $a ter seu valor impresso e ser incrementada:
function Teste() { static $a = 0; echo $a; $a++; }

O ltimo comando da funo intil, pois assim que for encerrada a

valor de algumas variveis precisa ser mantido. Ele funciona da seguinte forma: O valor prxima execuo da funo, ao encontrar novamente a declarao com static, o valor da varivel recuperado.

O modificador static muito utilizado em funes recursivas, j que o

das variveis declaradas como estticas mantido ao terminar a execuo da funo. Na

tempo de vida que uma varivel global, porm sua visibilidade restrita ao escopo local em que foi declarada e s recuperada aps a declarao. Exemplo:
function Teste() { echo "$a"; static $a = 0; $a++; }

Em outras palavras, uma varivel declarada como static tem o mesmo

40

funo, a impresso ocorre antes da atribuio de um valor funo, e portanto o contedo de $a nulo (string vazia). Nas execues seguintes da funo Teste() a valor ainda nulo. Para que a funo retorne algum valor o modificador static deve ser utilizado. impresso ocorre antes da recuperao do valor de $a, e portanto nesse momento seu

O exemplo acima no produzir sada alguma. Na primeira execuo da

Variveis Variveis O PHP tem um recurso conhecido como variveis variveis, que consiste

em variveis cujos nomes tambm so variveis. Sua utilizao feita atravs do duplo cifro ($$).
$a = teste; $$a = Mauricio Vivas; O exemplo acima e equivalente ao seguinte: $a = teste; $teste = Mauricio Vivas;

Variveis enviadas pelo navegador Para interagir com a navegao feita pelo usurio, necessrio que o PHP

possa enviar e receber informaes para o software de navegao. A maneira de enviar informaes, como j foi visto anteriormente, geralmente atravs de um comando de impresso, como o echo. Para receber informaes vindas do navegador atravs de um exemplo: se seu script php est localizado em http://localhost/teste.php3 e voc o chama com a url http://localhost/teste.php3?vivas=teste,

link ou um formulrio html o PHP utiliza as informaes enviadas atravs da URL. Por

automaticamente o PHP criar uma varivel com o nome $vivas contendo a string teste. Note que o contedo da varivel est no formato urlencode. Os formulrios necessitar de tratamento pelo programador. html j enviam informaes automaticamente nesse formato, e o PHP decodifica sem

41

URLencode O formato urlencode obtido substituindo os espaos pelo caracter +

e todos os outros caracteres no alfa-numricos (com exceo de _) pelo caracter % seguido do cdigo ASCII em hexadecimal.

Testando+1+2+3+%21%21

Por exemplo: o texto Testando 1 2 3 !! em urlencode fica

O PHP possui duas funes para tratar com texto em urlencode. Seguem suas sintaxes:
string urlencode(string texto); string urldecode(string texto);

texto passado como argumento. Para entender melhor o que um argumento e como funciona uma funo, leia o tpico funes.

Essas funes servem respectivamente para codificar ou decodificar um

Variveis de ambiente O PHP possui diversas variveis de ambiente, como a $PHP_SELF, por

exemplo, que contm o nome e o path do prprio arquivo. Algumas outras contm informaes. Para ter uma listagem de todas as variveis e constantes de ambiente e seus respectivos contedos, deve-se utilizar a funo phpinfo().

informaes sobre o navegador do usurio, o servidor http, a verso do PHP e diversas

Verificando o tipo de uma varivel possvel saber qual o tipo de uma varivel em determinado instantese no contar com a ajuda de algumas funes que ajudam a verificar isso. A verificao pode ser feita de duas maneiras: 42 Por causa da tipagem dinmica utilizada pelo PHP, nem sempre

Funo que retorna o tipo da varivel Esta funo a gettype. Sua assinatura a seguinte:
string gettype(mixed var);

A palavra mixed indica que a varivel var pode ser de diversos tipos.
double, string, array, object e unknown type.

A funo gettype pode retornar as seguintes strings: integer,

Funes que testam o tipo da varivel So as funes is_int,

is_integer,

is_real,

is_long,

is_float, is_string, is_array e is_object. Todas tm o mesmo formato,

seguindo modelo da assinatura a seguir:


int is_integer(mixed var); false em caso contrrio.

Todas essas funes retornam true se a varivel for daquele tipo, e

Destruindo uma varivel possvel desalocar uma varivel se ela no for usada posteriormente

atravs da funo unset, que tem a seguinte assinatura:


int unset(mixed var);

fazendo com que ela deixe de existir. Se mais na frente for feita uma chamada 43

A funo destri a varivel, ou seja, libera a memria ocupada por ela,

varivel, ser criada uma nova varivel de mesmo nome e de contedo vazio, a no ser que a chamada seja pela funo isset. Se a operao for bem sucedida, retorna true.

Verificando se uma varivel possui um valor

Existem dois tipos de teste que podem ser feitos para verificar se uma varivel est setada: com a funo isset e com a funo empty. A funo isset Possui o seguinte prottipo:
int isset(mixed var);

vazia ou o valor zero), e false em caso contrrio.

E retorna true se a varivel estiver setada (ainda que com uma string

A funo empty

Possui a seguinte assinatura:


int empty(mixed var);

possuir valor 0 (zero) ou uma string vazia. Caso contrrio, retorna false.

E retorna true se a varivel no contiver um valor (no estiver setada) ou

44

10. Classes e Objetos

Classe variveis. Uma vantagem da utilizao poder usufruir do recurso de encapsulamento de informao. Com o encapsulamento o usurio de uma classe no precisa saber como ela implementada, bastando para a utilizao conhecer a interface, ou seja, as funes disponveis. Uma classe um tipo, e portanto no pode ser atribuda a uma varivel. Para definir uma classe, deve-se utilizar a seguinte sintaxe:
class Nome_da_classe { var $variavel1; var $variavel2; function funcao1 ($parametro) { /* === corpo da funo === */ } }

Uma classe um conjunto de variveis e funes relacionadas a essas

Objeto a variveis. Variveis do tipo de uma classe so chamadas de objetos, e devem ser criadas utilizando o operador new, seguindo o exemplo abaixo:
$variavel = new $nome_da_classe;

Como foi dito anteriormente, classes so tipos, e no podem ser atribudas

Para

utilizar

as

funes definidas na classe, deve ser utilizado o

operador ->, como no exemplo:


$variavel->funcao1(

A varivel $this prprio objeto. Assim, quando uma classe instanciada em um objeto, e uma funo desse objeto na definio da classe utiliza a varivel $this, essa varivel significa o objeto que estamos utilizando. Na definio de uma classe, pode-se utilizar a varivel $this, que o

45

classe conta, que define uma conta bancria bastante simples, com funes para ver saldo e fazer um crdito.

Como exemplo da utilizao de classes e objetos, podemos utilizar a

class conta { var $saldo; function saldo() { return $this->saldo; } function credito($valor) { $this->saldo += $valor; } } $minhaconta = new conta; $minhaconta->saldo(); // a variavel interna no foi // inicializada, e no contm // valor algum

$minhaconta->credito(50); $minhaconta->saldo(); // retorna 50

SubClasses todas as variveis e funes da outra classe, e ainda ter as que forem adicionadas pelo programador. Em PHP no permitido utilizar herana mltipla, ou seja, uma classe pode ser extenso de apenas uma outra.Para criar uma classe extendida, ou derivada de outra, deve ser utilizada a palavra reservada extends, como pode ser visto no exemplo seguinte:
class novaconta extends conta { var $numero; function numero() { return $this->numero; } }

Uma classe pode ser uma extenso de outra. Isso significa que ela herdar

variveis, com a adio da varivel $numero e a funo numero(). Construtores

A classe acima derivada da classe conta, tendo as mesmas funes e

chamada no momento em que a classe instanciada (atravs do operador new). O construtor deve ter o mesmo nome que a classe a que pertence. Veja o exemplo: 46

Um construtor uma funo definida na classe que automaticamente

class conta { var $saldo; function conta () { $this.saldo = 0; } function saldo() { return $this->saldo; } function credito($valor) { $this->saldo += $valor; } }

Podemos perceber que a classe conta agora possui um construtor, que inicializa a varivel $saldo com o valor 0. Um construtor pode conter argumentos, que so opcionais, o que torna

esta ferramenta mais poderosa. No exemplo acima, o construtor da classe conta pode receber como argumento um valor, que seria o valor inicial da conta. automaticamente herdado quando o construtor da classe derivada chamado. Vale observar que para classes derivadas, o construtor da classe pai no

47

12. Concluses

A realizao deste Projeto Supervisionado possibilitou o estudo da linguagem PHP, que se mostrou uma ferramenta poderosa e simples de utilizar na construo de sites para a World Wide Web dinmicos, possibilitando uma maior interao com o usurio e a armazenagem das informaes em Bancos de Dados. Aps a concluso da aplicao, tornou-se claro que a combinao de

scripts server-side, como o PHP, com scripts client-side, como JavaScript, por exemplo, possibilita um maior aproveitamento dos recursos disponveis para criar qual dos dois tipos de scripts deve ser utilizado para determinado fim. opo, por diversos motivos: o custo de aquisio, que no existe; a portabilidade, permitindo que uma aplicao seja desenvolvida em uma plataforma para ser executada uma sintaxe bastante simples; a possibilidade de trabalhar com diversos bancos de dados e servidores http, alm do grande nmero de funes pr-definidas, entre outras coisas. bastante enriquecedor, por ter produzido uma documentao em portugus para a linguagem e ter motivado o aluno a continuar se dedicando ao tema. Por esses e outros motivos, possvel afirmar que o estudo sobre PHP foi em outra; a simplicidade, j que os scripts ficam no prprio cdigo html, e possuem Entre as linguagens de script server-side, PHP surgiu como uma tima pginas dinmicas, e no processo de criao deve-se ponderar bastante para concluir

48

13. Bibliografia e Referncias


A pesquisa foi baseada no manual de PHP, disponvel em www.php.net, e

em diversos tutoriais disponveis no site www.phpbuilder.com. Esses dois endereos contm uma vasta documentao sobre a linguagem, alm de endereos para listas de discusso, onde pode-se solicitar ajuda de programadores mais experientes.

Portugus, que pode ser assinada no endereo www.egroups.com/group/php-pt/. PHPWizard, que pode ser encontrado em www.phpwizard.net.

Uma boa referncia em portugus a lista PHP para quem fala Em ingls, alm dos endereos citados acima, uma boa fonte o site

49

APNDICE 01 - Funes para tratamento de strings


Funes relacionadas a HTML htmlspecialchars
string htmlspecialchars(string str);

Retorna a string fornecida, substituindo os seguintes caracteres: & para '&amp;' " para '&quot;' < para '&lt;' > para &gt;'

htmlentities
string htmlentities(string str);

Funciona de maneira semelhante ao comando anterior, mas de maneira mais completa, pois converte todos os caracteres da string que possuem uma representao especial em html, como por exemplo: para '&ordm;' para '&ordf;'

para '&aacute;' para &ccedil;'

nl2br
string nl2br(string str);

por quebras de linhas em html (<br>).

Retorna a string fornecida substituindo todas as quebras de linha (\n)

Exemplo: echo nl2br(Mauricio\nVivas\n); Imprime: Maurcio<br>Vivas<br>

50

get_meta_tags
array get_meta_tags(string arquivo);

Abre um arquivo html e percorre o cabealho em busca de meta tags, retornando num array todos os valores encontrados.
Exemplo: No arquivo teste.html temos: ... <head> <meta name="author" content="jose"> <meta name="tags" content="php3 documentation"> ... </head><!-- busca encerra aqui --> ... a execuo da funo: get_meta_tags(teste.html); retorna o array: array(author=>jose,tags=>"php3 documentation");

strip_tags
string strip_tags(string str);

Retorna a string fornecida, retirando todas as tags html e/ou PHP encontradas.
Exemplo: strip_tags('<a href="teste1.php3">testando</a><br>'); Retorna a string testando

urlencode
string urlencode(string str);

Retorna a string fornecida, convertida para o formato urlencode. Esta funo til para passar variveis para uma prxima pgina. 51

urldecode
string urldecode(string str);

Funciona de maneira inversa a urlencode, desta vez decodificando a string fornecida do formato urlencode para texto normal.

Funes relacionadas a arrays

Implode e join
string implode(string separador, array partes); string join(string separador, array partes);

elementos do array fornecido separados pela string tambm fornecida.

As duas funes so idnticas. Retornam uma string contendo todos os

Exemplo: $partes = array("a", "casa nmero", 13, " azul"); $inteiro = join(" ",$partes); $inteiro passa a conter a string: a casa nmero 13 azul

split
array split(string padrao, string str, int [limite]);

Retorna um array contendo partes da string fornecida separadas pelo padro fornecido, podendo limitar o nmero de elementos do array.
Exemplo: $data = 11/14/1975; $data_array = split(/,$data); O cdigo acima faz com que a varivel $data_array receba o valor: array(11,14,1975);

52

explode
array explode(string padrao, string str);

diferena que no possvel estabelecer um limite para o nmero de elementos do array.

Funciona de maneira bastante semelhante funo split, com a

Comparaes entre strings similar_text


int similar_text(string [porcentagem]); str1, string str2, double

coincidentes. Opcionalmente pode ser fornecida uma varivel, passada por referncia (ver tpico sobre funes), que receber o valor percentual de igualdade entre as strings. diferentes.
Exemplo: $num = similar_text("teste", "testando",&$porc); As variveis passam a ter os seguintes valores: $num == 4; $porc == 61.538461538462

Compara as duas strings fornecidas e retorna o nmero de caracteres

Esta funo case sensitive, ou seja, maisculas e minsculas so tratadas como

strcasecmp
int strcasecmp(string str1, string str2);

Compara as duas strings e retorna 0 (zero) se forem iguais, um valor maior que zero se str1 > str2, e um valor menor que zero se str1 < str2. Esta funo case insensitive, ou seja, maisculas e minsculas so tratadas como iguais.

strcmp
int strcasecmp(string str1, string str2);

53

que esta case sensitive, ou seja, maisculas e minsculas so tratadas como diferentes.

Funciona de maneira semelhante funo strcasecmp, com a diferena

strstr
string strstr(string str1, string str2); string strchr(string str1, string str2);

em str1. Se no encontrar, retorna uma string vazia, e se encontrar retorna todos os caracteres de str1 a partir desse ponto.
Exemplo: strstr("Mauricio Vivas", "Viv"); // retorna Vivas

As duas funes so idnticas. Procura a primeira ocorrncia de str2

stristr
string strstr(string str1, string str2);

esta case insensitive, ou seja, maisculas e minsculas so tratadas como iguais.

Funciona de maneira semelhante funo strstr, com a diferena que

strpos
int strpos(string str1, string str2, int [offset] );

no houver. O parmetro opcional offset determina a partir de qual caracter de str1 de str1.

Retorna a posio da primeira ocorrncia de str2 em str1, ou zero se

ser efetuada a busca. Mesmo utilizando o offset, o valor de retorno referente ao incio

strrpos
int strrpos(string haystack, char needle);

Retorna a posio da ltima ocorrncia de str2 em str1, ou zero se no houver.

54

Funes para edio de strings

chop
string chop(string str);

Retira espaos e linhas em branco do final da string fornecida.


Exemplo: chop( Teste ); // retorna Teste

\n

\n

ltrim
string ltrim(string str);

Retira espaos e linhas em branco do final da string fornecida.


Exemplo: ltrim( \n ); // retorna Teste \n

Teste

\n

\n

trim
string trim(string str);

Retira espaos e linhas em branco do incio e do final da string fornecida.


Exemplo: trim( Teste \n ); // retorna Teste

\n

strrev
string strrev(string str);

Retorna a string fornecida invertida.


Exemplo: strrev(Teste); // retorna etseT

55

strtolower
string strtolower(string str);

Retorna a string fornecida com todas as letras minsculas.


Exemplo: strtolower(Teste); // retorna teste

strtoupper
string strtoupper(string str);

Retorna a string fornecida com todas as letras maisculas.


Exemplo: strtolower(Teste); // retorna TESTE

ucfirst
string ucfirst(string str);

Retorna a string fornecida com o primeiro caracter convertido para letra maiscula.
Exemplo: ucfirst(teste de funcao); // retorna Teste de funcao

ucwords
string ucwords(string str);

Retorna a string fornecida com todas as palavras iniciadas por letras maisculas.
Exemplo: ucwords(teste de funcao); // retorna Teste De Funcao

56

str_replace
string str3); str_replace(string str1, string str2, string

Altera todas as ocorrncias de str1 em str3 pela string str2.

Funes diversas

chr
string chr(int ascii);

Retorna o caracter correspondente ao cdigo ASCII fornecido.

ord
int ord(string string);

Retorna o cdigo ASCII correspontente ao caracter fornecido.

echo
echo(string arg1, string [argn]... );

Imprime os argumentos fornecidos.

print
print(string arg);

Imprime o argumento fornecido. strlen


int strlen(string str);

Retorna o tamanho da string fornecida. 57

APNDICE 02 - Funes para tratamento de arrays


Funes Genricas

Array
array array(...);

fornecer o ndice de cada elemento. Esse ndice pode ser um valor de qualquer tipo, e sequencial, a partir do 0 ou do ltimo ndice inteiro explicitado. Vejamos alguns exemplos:
Exemplo 1 $teste = array("um", "dois","tr"=>"tres",5=>"quatro","cinco"); Temos o seguinte mapeamento: 0 => um (0 o primeiro ndice, se no houver um explicito) 1 => dois (o inteiro seguinte) tr => tres 5 => quatro (valor explicitado) 6 => cinco (o inteiro seguinte ao ltimo atribudo, e no o prximo valor, que seria 2) Exemplo 2 $teste = 6=>"dois","tr"=>"tres",5=>"quatro","cinco"); Temos o seguinte mapeamento: 0 => um 6 => dois tr => tres 5 => quatro (seria 7, se no fosse explicitado) 7 => cinco (seria 6, se no estivesse ocupado) array("um",

a funo que cria um array a partir dos parmetros forncidos. possvel

no apenas de inteiro. Se o ndice no for fornecido o PHP atribui um valor inteiro

j que isso pode confundir o programador. No caso de realmente haver a necessidade de utilizar esse recurso, deve-se ter bastante ateno ao manipular os ndices do array.

Em geral, no recomendvel utilizar arrays com vrios tipos de ndices,

range
array range(int minimo, int maximo);

58

ao intervalo fornecido, inclusive. Se o valor do primeiro parmetro for maior do que o do segundo, a funo retorna false (valor vazio).

A funo range cria um array cujos elementos so os inteiros pertencentes

shuffle
void shuffle(array &arr);

aleatoriamente e no retorna valor algum.

Esta funo embaralha o array, ou seja, troca as posies dos elementos

sizeof
int sizeof(array arr);

Se for utilizada com uma varivel cujo valor no do tipo array, retorna 1. Se a varivel no estiver setada ou for um array vazio, retorna 0.

Retorna um valor inteiro contendo o nmero de elementos de um array.

Funes de navegao prximo elemento a ser acessado no caso de no ser especificado um ndice. As funes seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array para verificar seu contedo (chaves e elementos). Toda varivel do tipo array possui um ponteiro interno indicando o

reset
mixed reset(array arr);

Seta o ponteiro interno para o primeiro elemento do array, e retorna o contedo desse elemento. end
mixed end(array arr);

contedo desse elemento.

Seta o ponteiro interno para o ltimo elemento do array, e retorna o 59

next
mixed next(array arr);

contedo desse elemento.

Seta o ponteiro interno para o prximo elemento do array, e retorna o Obs.: esta no uma boa funo para determinar se um elemento o

ltimo do array, pois pode retornar false tanto no final do array como no caso de haver um elemento vazio.

prev
mixed prev(array arr);

Seta o ponteiro interno para o elemento anterior do array, e retorna o contedo desse elemento. Funciona de maneira inversa a next.

pos
mixed pos(array arr);

Retorna o contedo do elemento atual do array, indicado pelo ponteiro interno.

key
mixed key(array arr);

o elemento atual indicado pelo ponteiro interno do array, retorna seu ndice. each
array each(array arr);

Funciona de maneira bastante semelhante a pos, mas ao invs de retornar

ponteiro interno do array. o valor de retorno um array de quatro elementos, cujos ndices so 0, 1, key e value. Os elementos de ndices 0 e key armazenam o

Retorna um array contendo o ndice e o elemento atual indicao pelo

60

ndice do valor atual, e os elementos de ndices 1 e value contm o valor do elemento atual indicado pelo ponteiro. array e determinar se j foi encontrado o ltimo elemento, pois no caso de haver um elemento vazio, a funo no retornar o valor false. A funo each s retorna
false depois q o ltimo elemento do array foi encontrado. Exemplo: /*funo que percorre todos os elementos de um array e imprime seus ndices e valores */ function imprime_array($arr) { reset($arr); while (list($chave,$valor) = each($arr)) echo Chave: $chave. Valor: $valor; }

Esta funo pode ser utilizada para percorrer todos os elementos de um

Funes de ordenao com determinados critrios. Estes critrios so: manuteno ou no da associao entre entre dois elementos. So funes que servem para arrumar os elementos de um array de acordo

ndices e elementos; ordenao por elementos ou por ndices; funo de comparao

sort
void sort(array &arr);

um array em ordem crescente, sem manter os relacionamentos com os ndices.

A funo mais simples de ordenao de arrays. Ordena os elementos de

rsort
void rsort(array &arr);

array em ordem decrescente, sem manter os relacionamentos com os ndices.

Funciona de maneir ainversa funo sort. Ordena os elementos de um

61

asort
void asort(array &arr);

elementos de um array em ordem crescente, porm mantm os relacionamentos com os ndices.

Tem o funcionamento bastante semelhante funo sort. Ordena os

arsort
void arsort(array &arr);

um array em ordem decrescente e mantm os relacionamentos dos elementos com os ndices.

Funciona de maneira inversa funo asort. Ordena os elementos de

ksort
void ksort(array &arr);

array de acordo com seus ndices, em ordem crescente, mantendo os relacionamentos.

Funo de ordenao baseada nos ndices. Ordena os elementos de um

usort
void usort(array &arr, function compara);

elementos de um array sem manter os relacionamentos com os ndices, e utiliza para efeito de comparao uma funo definida pelo usurio, que deve comparar dois pelo usurio. uasort
void uasort(array &arr, function compara);

Esta uma funo que utiliza outra funo como parmetro. Ordena os

elementos do array e retornar 0, 1 ou 1, de acordo com qualquer critrio estabelecido

elementos de um array e mantm os relacionamentos com os ndices, utilizando para efeito de comparao uma funo definida pelo usurio, que deve comparar dois 62

Esta funo tambm utiliza outra funo como parmetro. Ordena os

elementos do array e retornar 0, 1 ou 1, de acordo com qualquer critrio estabelecido pelo usurio.

uksort
void uksort(array &arr, function compara);

relacionamentos com os elementos., e utiliza para efeito de comparao uma funo definida pelo usurio, que deve comparar dois ndices do array e retornar 0, 1 ou 1, de acordo com qualquer critrio estabelecido pelo usurio.

Esta funo ordena o array

atravs dos ndices, mantendo os

63

Das könnte Ihnen auch gefallen