Abrir tópico com a navegação

PRINCIPAIS COMANDOS PHP

 

if

else

elseif

while

do while

for

foreach

break

continue

functions

date

strpos

str-replace

ltrim

rtrim

trim

substr

substr-replace

array

activex

 

Arrays

Um array no PHP é atualmente um mapa ordenado. Um mapa é um tipo que relaciona valores para chaves. Este tipo é otimizado de várias maneiras, então você pode usá-lo como um array real, ou uma lista (vetor), hashtable (que é uma implementação de mapa), dicionário, coleção, pilha, fila e provavelmente mais. Como você pode ter outro array PHP como um valor, você pode facilmente simular árvores.

A explicação dessas estruturas estão além do escopo desse manual, mas você pode encontrar exemplos para cada uma dessas estruturas a seguir. Para mais informações sobre estruturas, refira-se a literatura externa sobre esses tópicos.

Sintaxe

Especificando com array()

Um array pode ser criado com o construtor de linguagem array(). Ele pega um certo número de pares separados por vírgula chave => valor .

array( [chave =>] valor
, ...
)
// chave pode ser tanto string ou um integer
// valor pode ser qualquer coisa

<?php
$arr = array("foo" => "bar", 12 => true);

echo $arr["foo"]; // bar
echo $arr[12]; // 1
?>

A chave pode ser tanto um integer ou uma string. Se a chave é uma representação padrão de um integer, ele será interpretado assim (por exemplo, "8" será interpretado como 8, enquanto "08" será interpretado como "08"). Não há diferença entre arrais indexados e associativos em PHP, apenas um tipo de array, que pode ter índices inteiros ou string.

O valor pode ser qualquer tipo PHP:

<?php
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));

echo $arr["somearray"][6]; // 5
echo $arr["somearray"][13]; // 9
echo $arr["somearray"]["a"]; // 42
?>

Se omitir a chave quando fornece um novo item, o maior índice inteiro é obtido, e a nova chave será esse máximo + 1. Se você especificar uma chave que já possui um valor assimilado a ela, então o valor é sobrescrito.

<?php
// Esse array eh como ...
array(5 => 43, 32, 56, "b" => 12);

// ... este array
array(5 => 43, 6 => 32, 7 => 56, "b" => 12);
?>

Utilizar TRUE como chave será interpretado como o integer 1 na chave. Utilizando FALSE como chave será avaliado como o integer 0. Usar NULL como chave é interpretado como uma string vazia. Usar uma string vazia como chave irá criar (ou sobrescerver) uma chave com uma string vazia e seu valor, e isto não é o mesmo que usar colchetes vazios.

Você não pode usar arrays ou objetos como chaves. Fazendo isso resultará em um alerta: Illegal offset type.

Criando/modificando com a sintaxe de colchetes

Você pode também modificar um array existente explicitamente assimilando valores nele.

Isto é feito apenas assimilando valores para o array enquanto especificando a chave em colchetes. Você pode omitir a chave, colocando um par vazio de colchetes ("[ ]").

$arr[chave] = valor;
$arr[] = valor;
// chave tanto um integer ou string


// valor pode ser qualquer coisa

Se $arr não existir ainda, ele será criado. Então isto é um meio alternativo para especificar um array. Para mudar um certo valor, apenas assimile um novo valor para um elemento especificado por sua chave. Se você quiser remover um par chave/valor, você precisa aplicar unset() nele.

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56; // Isto é o mesmo que $arr[13] = 56;
// nesse ponto do script

$arr["x"] = 42; // Isto acrescenta um novo elemento
// para o array com a chave "x"

unset($arr[5]); // Isto remove um elemento do array

unset($arr); // E isto apaga todo o array
?>

Nota: Como mencionado acima, não informar a chave dentro dos colchetes, então o maior índice inteiro é obtido, e a nova chave será esse máximo + 1. Se nenhum índice inteiro existir ainda, a chave será 0 (zero). Se você especificar uma chave que já possui um valor assimilada a ela, então o valor é sobrescrito.

 

Note que a chave inteira maior, utilizada para, isso não precisa necessariamente existir no array. Ele pode ter existido no array desde a última vez que o array foi indexado. Veja o seguinte exemplo:

 

<?php
// Criando um array normal
$array = array(1, 2, 3, 4, 5);
print_r($array);

// Agora apagando todos os itens, mas deixando o array intacto:
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);

// Acrescentando um item (note que a chabe eh 5, em vez de zero
// como você pode ter esperado).
$array[] = 6;
print_r($array);

// Reindexando:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

O exemplo acima deve produzir a seguinte saída:

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Array
(
)
Array
(
[5] => 6
)
Array
(
[0] => 6
[1] => 7
)

.

<?php
// isto
$a = array( 'cor' => 'vermelha',
'sabor' => 'doce',
'forma' => 'redonda',
'nome' => 'maçã',
4 // a chave será 0
);

// isto é equivalente a acima
$a['cor'] = 'vermelha';
$a['sabor'] = 'doce';
$a['forma'] = 'redonda';
$a['nome'] = 'maçã';
$a[] = 4; // a chave será 0

$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// o mesmo de array( 0 => 'a' , 1 => 'b' , 2 => 'c' ),
// ou simplesmente array('a', 'b', 'c')
?>

 

break

break cancela a execução do comando for, foreach while, do..while ou switch atual.

break aceita um argumento numérico opcional que diz a ele quantas estruturas aninhadas englobadas devem ser quebradas.

<?php
$arr = array ('um', 'dois', 'três', 'quatro', 'PARE', 'cinco');
while (list (, $val) = each ($arr)) {
if ($val == 'PARE') {
break; /* Você poderia colocar 'break 1;' aqui. */
}
echo "$val<br>\n";
}

/* Utilizando o argumento opcional. */

$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "No 5<br>\n";
break 1; /* Sai somente do switch. */
case 10:
echo "No 10; saindo<br>\n";
break 2; /* Sai do switch e while. */
default:
break;
}
}
?>

continue

continue é usado dentro de estruturas de loops para saltar o resto da iteração do loop atual e continuar a execução no início da próxima iteração.

 
Nota: Note que no PHP a instrução switch é considerada uma estrutura de loop quando relacionada ao comando continue.

continue aceita um argumento numérico opcional que diz a ele de quantos níveis de loops aninhados ele deve saltar até o fim.

<?php
while (list ($key, $value) = each ($arr)) {
if (!($key % 2)) { // pula itens pares
continue;
}
do_something_odd ($value);
}

$i = 0;
while ($i++ < 5) {
echo "Fora<br>\n";
while (1) {
echo "&nbsp;&nbsp;Meio<br>\n";
while (1) {
echo "&nbsp;&nbsp;Dentro<br>\n";
continue 3;
}
echo "Isto nunca será exibido.<br>\n";
}
echo "Nem isso.<br>\n";
}
?>

date

(PHP 3, PHP 4 )

date - Formata a data e a hora local

Descrição

string date ( string format [, int timestamp])

Retorna uma string de acordo com o formato da string usando o inteiro dado timestamp ou a a hora corrente local se nenhum times tamp é dado. Em outras palavras, timestamp é opcional e o padrão para o valor de time().

 
Nota: A linha válida de um timestamp é tipicamente de Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (Estas são as datas que correspondem aos mínimos e máximos valores para um inteiro de 32-bit definido). No windows esta linha é limitada de 01-01-1970 para 19-01-2038.
 
Nota: Para gerar um timestamp de uma string para representação de data, você deve estar capaz de usar strtotime(). Adicionalmente, alguns bancos de dados têm para converter suas datas em timestamps (tais como a função do MySQL UNIX_TIMESTAMP).

Tabela 1. Os seguintes caracteres são reconhecidos no format parameter string

format character

Descrição

Exemplo de valores retornados

a

Lowercase Ante meridiem and Post meridiem

am or pm

A

Uppercase Ante meridiem and Post meridiem

AM ou PM

B

Swatch Internet time

000 até 999

d

Dia do mês, 2 digitos com leading zeros

01 to 31

D

Uma representação textual de um dia, três letras

Mon through Sun

F

Uma representação textual de um mês, tal como janeiro ou Março

Janeiro a Dezembro

g

12-hour formato de hora sem leading zeros

1 a 12

G

24-hour formato de hora sem leading zeros

0 a 23

h

12-hour formato de hora com leading zeros

01 a 12

H

24-hour formato de hora com leading zeros

00 a 23

i

Minutos com leading zeros

00 para 59

I (i maiúsculo)

Se a data está ou não em horário de verão

1 Horário de Verão, 0 sem Horário de Verão.

j

Dia do mês sem leading zeros

1 to 31

l ('L' minúsculo)

Uma representação completa textual de um dia da semana

Domingo a Sábado

L

Se é ano bissexto

1 ano bissexto, 0 ano não bissexto.

m

Representação numérica de um mês, com leading zeros

01 a 12

M

Uma representação textual curta de um mês, três letras

Jan a Dec

n

Representação numérica de um mês, sem leading zeros

1 a 12

O

Diferença ao horário de Greenwich (GMT) em horas

Exemplo: +0200

r

RFC 822 formatted date

Exemplo: Thu, 21 Dec 2000 16:01:07 +0200

s

Segundos, com leading zeros

00 a 59

S

Sufixo ordinal inglês para o dia do mês, 2 caracteres

st, nd, rd ou th. Funciona bem com j

t

Número de dias do dado mês

28 a 31

T

Timezone setting of this machine

Examples: EST, MDT ...

U

Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

See also time()

w

Representação numérica do dia da semana

0 (para Domingo) a 6 (para Sábado)

W

Número da semana do ano ISO-8601, semanas começadas na segunda-feira (adicionado no PHP 4.1.0)

Exemplo: 42 (a 42nd (quadragésima segunda) semana do ano)

Y

Uma representação completa do ano, 4 dígitos

Examples: 1999 ou 2003

y

Representação do ano em dois dígitos

Examples: 99 ou 03

z

O dia do ano

0 a 366

Z

Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

-43200 até 43200

Caracteres não reconhecidos no formato serão impressos como são. O formato Z será sempre retornado 0 quando usar gmdate().

Exemplo 1. date() exemplos

<?php
// Prints something like: Wednesdayecho date("l");// Prints something like: Wednesday 15th of January 2003 05:51:38 AMecho date ("l dS of F Y h:i:s A");// Prints: July 1, 2000 is on a Saturdayecho "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));?>

 

<?php
// Assuming today is: March 10th, 2001, 5:16:18 pm$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm$today = date("m.d.y");                         // 03.10.01$today = date("j, n, Y");                       // 10, 3, 2001$today = date("Ymd");                           // 20010310$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month$today = date("H:i:s");                         // 17:16:17?>

do..while

Loops do..while são bem similares aos loops while, exceto pelo fato de que a condição é verificada no fim de cada iteração em vez de no começo. A diferença principal dos loops while regulares é que a primeira iteração de um loop do.while é garantidamente executada (a condição só é verificada no fim da iteração) enquanto que ele pode não rodar necessariamente em um loop while normal (a condição é verificada no começo de cada iteração, se ela é avaliada como FALSE logo no começo, a execução do loop terminaria imediatamente).

Há apenas uma sintaxe para loops do..while:

<?php
$i = 0;do {print $i;} while ($i > 0);?>

O loop acima rodaria exatamente uma vez, desde que depois da primeira iteração, quando a condição é verificada, ela é avaliada como FALSE ($i não é maior que zero 0) e a execução do loop termina.

Usuários avançados de C podem estar familiarizados com o uso diferenciado do loop do.while, para permitir o fim da execução no meio dos blocos de código, englobando-os com do.while(0), e usando a instrução break . O fragmento de código a seguir demonstra isso:

<?php
do {if ($i < 5) {print "i não é grande o suficiente";break;}$i *= $factor;if ($i < $minimum_limit) {break;}print "i está Ok";/* process i */} while(0);?>

Não se preocupe se você não entendeu isto da forma certa ou de jeito nenhum. Você pode codificar scripts simples ou mesmo poderosos sem usar esse 'recurso'.

 

else

Freqüentemente você vai querer executar uma instrução se uma certa condição for encontrada, e uma instrução diferente se a condição não for encontrada. Isto é o que o else faz. else estende um comando if para executar uma instrução caso a expressão no comando if seja avaliada como FALSE. Por exemplo, o código a seguir mostraria a é maior que b se $a for maior que $b, e a NÃO é maior que b caso contrário:

<?php
if ($a > $b) {print "a é maior que b";} else {print "a NÃO é maior que b";}?>

O comando else só é executado se a expressão if for avaliada como FALSE, e se havendo qualquer expressão elseif, somente se todas elas forem avaliadas como FALSE também (veja elseif).

elseif

elseif, como seu nome sugere, é uma combinação de if e else. Da mesma forma que o else, ele estende um comando if para executar uma instrução diferente no caso de a expressão if original ser avaliada como FALSE. Porém, ao contrário de else, ele executará aquela expressão alternativa somente se a expressão condicional do elseif for avaliada como TRUE. Por exemplo, o código a seguir mostraria a é maior que b, a é igual a b ou a é menor que b:

<?php
if ($a > $b) {print "a é maior que b";} elseif ($a == $b) {print "a é igual a b";} else {print "a é menor que b b";}?>

Podem haver vários elseifs dentro da mesma instrução if. A primeira expressão elseif (se houver) que for avaliada como TRUE será executada. No PHP, você também pode escrever 'else if' (em duas palavras) e o comportamento será idêntico a um 'elseif' (em uma só palavra). O significado sintático é ligeiramente diferente (se você está familiarizado com C, eles tem o mesmo comportamento), mas no final de contas ambos teriam exatamente o mesmo comportamento.

O comando elseif só é executado se a expressão if precedente e quaisquer expressões elseif anteriores forem avaliadas como FALSE, e a expressão elseif atual for avaliada como TRUE.

for

Loops for são os laços mais complexos em PHP. Eles se comportam como os seus compatíveis em C. A sintaxe de um loop for é:

for (expr1; expr2; expr3) instrucoes

A primeira expressão (expr1) é avaliada (executada) uma vez incondicionalmente no começo do loop.

No começo de cada iteração, expr2 é avaliada. Se ela é avaliada como TRUE, o loop continua e o(s) comando(s) aninhado(s) é(são) executado(s). Se é avaliada como FALSE, a execução do 'loop' termina.

No fim de cada iteração, expr3 é avaliada (executada).

Cada uma das expressões pode ser vazia. expr2 vazia significa que o loop pode rodar indefinidamente (PHP considera-a implicitamente como TRUE, como em C). Isto pode não ser tão inútil quanto você pode pensar, pois freqüentemente você pode querer terminar o 'loop' usando uma instrução breakcondicional em vez de usar a expressão-verdade do for.

Considere os seguintes exemplos. Todos eles mostram números de 1 a 10:

<?php
/* exemplo 1 */for ($i = 1; $i <= 10; $i++) {print $i;}/* exemplo 2 */for ($i = 1; ; $i++) {if ($i > 10) {break;}print $i;}/* exemplo 3 */$i = 1;for (;;) {if ($i > 10) {break;}print $i;$i++;}/* exemplo 4 */for ($i = 1; $i <= 10; print $i, $i++);?>

Obviamente, o primeiro exemplo parece ser o mais bonito (ou talvez o quarto), mas você pode perceber que a possível utilização de expressões vazias em laços for se torna prático em algumas ocasiões.

O PHP também suporta a "sintaxe de dois-pontos" alternativa para laços for:

for (expr1; expr2; expr3): instrucoes; ...; endfor;

foreach

O PHP4 (mas não o PHP3) inclui um construtor foreach, muito parecido com o PERL e outras linguagens. Isto oferece uma maneira fácil de iterar sobre matrizes. foreach funciona somente com arrays, e lançará um erro se tentar utilizá-lo em uma variável de qualquer tipo diferente ou em variáveis não inicializadas. Há duas sintaxes; a segunda é uma abreviatura, mas útil, da primeira:

foreach (expressao_array as $valor) instrucoes
foreach (expressao_array as $chave => $valor) instrucoes

A primeira forma varre uma dada matriz dada por expressao_array. Em cada 'loop', o valor do elemento corrente é atribuído a $valor e o ponteiro interno da matriz é avançado em uma posição (assim, no próxima iteração você estará olhando para o próximo elemento).

A segunda forma faz a mesma coisa, exceto pelo fato de que a chave do elemento atual será atribuído à variável $chave em cada iteração.

 
Nota: Quando o foreach inicia sua primeira execução, o ponteiro interno da matriz é zerado automaticamente para o primeiro elemento do array. Isto significa que você não precisa chamar reset() antes de um loop foreach .
 
Nota: Note também que foreach opera sobre uma cópia do array especificado, não o próprio array, e portanto, o ponteiro do array original não é modificado como na instrução each(), que altera o elemento do array selecionado, mas isso não se reflete o array original. Entretanto, o ponteiro interno do array original é movimentado pelo processamento do array. Assumindo que o laço foreach rode até o fim, o ponteiro interno do array estará posicionado no fim do array.
 
Nota: foreach tem a habilidade de evitar mensagens de erro com '@'.

Você pode ter notado que os seguintes itens são funcionalmente idênticos:

<?php
$arr = array("one", "two", "three");reset ($arr);while (list(, $value) = each ($arr)) {echo "Valor: $value<br>\n";}foreach ($arr as $value) {echo "Valor: $value<br>\n";}?>

Os seguintes também são funcionalmente idênticos:

<?php
reset ($arr);while (list($key, $value) = each ($arr)) {echo