Curso de PHP Completo, Online e Grátis - Sumário

Siga os seguintes tutoriais na ordem:

Introdução ao PHP Básico

  1. PHP - O que é? Para que serve? Onde e como é usado?
  2. O necessário para começar a programar em PHP
  3. Olá, Mundo! (Hello, World!) em PHP
  4. Saída simples: echo e print
    Exercícios de saída simples
  5. Tipos de dados
  6. Variáveis
  7. Matemática: Operadores Aritméticos de Soma, Subtração, Multiplicação, Divisão e Resto da Divisão em PHP
  8. Recebendo dados via input do HTML para o PHP
    Calculadora simples
  9. Precedência de operadores
  10. Comentar código PHP
  11. Exercícios Básicos de PHP

Testes Condicionais em PHP

Laços e Loopings em PHP

Funções


Array em PHP

Programação Orientada a Objetos


Data e Tempo em PHP

  1. Como checar se uma data é válida: checkdate()
  2. Como exibir datas e horários em PHP: função date()
  3. Função mktime() e a Unix Timestamp
  4. Função getdate() - Obtendo datas e horários em PHP
  5. Função gettimeofday() - Obtendo tempo atual
  6. Função time() e date() juntas
  7. Data e Hora em português: setlocale() e strftime()
  8. Última modificação de página: getlastmod()
  9. Números de dia em um mês qualquer
  10. Calculando datas no futuro e no passado: strotime()
  11. Classe DateTime: Data e Tempo com orientação a objetos


    Tutoriais de PHP

    A Classe DateTime - Trabalhando com Datas e Times com Orientação a Objetos

    Neste tutorial, vamos aprender como trabalhar com datas e tempo através da programação orientada a objetos em PHP.

    Estudar pela apostila de PHP

    Criando objetos da classe DateTime

    A classe DataTime provém uma série de métodos, atributos e possibilidades que nos permitem trabalhar de maneira muito mais fácil com datas e tempo, usando orientação a objetos.

    Vamos criar um objeto desta classe:
    $date = new DateTime();

    Se dermos um print_c($date);, veremos que no resultado é o atual, do momento da criação do objeto:
    DateTime Object (
    [date] => 2019-02-28 11:06:53.684238
    [timezone_type] => 3
    [timezone] => America/Sao_Paulo )

    É um objeto do momento atual, no momento que estou programando este tutorial.

    Construtor da classe DateTime

    Podemos, porém, já inicializar com uma data, no formato: ano-mes-dia, para criar um objeto com uma data específica.

    Vamos escolher uma data aleatória:
    $date = new DateTime("2020-02-28");

    O resultado da print_r($date); é:
    DateTime Object (
    [date] => 2019-02-28 00:00:00.000000
    [timezone_type] => 3
    [timezone] => America/Sao_Paulo )

    Formatando datas e horas: Método format()

    A classe DateTime possui o método format() que usa os mesmos parâmetros da função date(), assim podemo exibir o formato de data e hora do jeito que quisermos.

    Por exemplo, para exibirmos no formato brasileiro de: dd/mm/YYYY Hora:minuto:segundo, basta fazer:
    $date = new DateTime();
    echo $date->format( "d/m/Y H:i:s" );

    Somando e Subtraindo datas

    Que tal saber qual foi a data de 35 dias atrás?
    Basta fazer:

    $date = new DateTime('-35 days');
    echo $date->format( "d/m/Y H:i:s" );

    E qual data vai ser daqui 2 semanas e 10 dias?
    $date = new DateTime('+2 weeks 10 days');
    echo $date->format( "d/m/Y H:i:s" );

    Diferença entre datas: Método diff()

    Imagina calcular, de maneira instantânea a diferença de anos, meses, dias, horas, minutos e até segundos daqui até uma outra data?

    Vamos pegar a data atual:
    $hoje = new DateTime();

    Agora uma futura qualquer:
    $futuro = new DateTime('2020-02-27');

    O array $diff vai armazenar a diferença entre $futuro e $hoje, assim:
    $diff = $hoje->diff($futuro);

    Para exibir o resultado, faça:
     <?php
      $hoje = new DateTime();
      $futuro = new DateTime('2020-02-27');
      
      $diff = $hoje->diff($futuro);
      
      echo "Diferença de: <br/>"
        .$diff->days . " dias <br/>"
        .$diff->m . " meses <br/>"
        .$diff->y . " anos <br/>"
        .$diff->h . " horas <br/>"
        .$diff->i . " minutos <br/>"
        .$diff->s . " segundos<br/>";
     ?>
    O resultado aqui foi:
    Diferença de:
    363 dias
    11 meses
    0 anos
    12 horas
    28 minutos
    28 segundos

    Bem preciso esse PHP, não ?

    Modificando Data e Hora: setDate() e setTime()

    Após criar e definir seu objeto do tipo DateTime, é totalmente possível mudar seus atributos, como ano, dia, hora ou o que for, através dos setters.

    Vamos definir a data atual e exibir ela:
    $data = new DateTime();
    echo $data->format( "d/m/Y H:i" )."<br />";

    O resultado é: 28/02/2019 11:37 (sim, tá quase na hora do almoço)

    Agora vamos mudar a data pra 01/03/2019, amanhã e o horário para 12:00.
    Nosso código fica assim:
    $data->setDate(2019,03,01);
    $data->setTime(12,0,0);
    echo $data->format( "d/m/Y H:i" )."<br />";

    E o resultado assim: 01/03/2019 12:00

    Bonitinho, não?

    Comparando Datas: var_dump

    Muitas vezes é preciso saber se uma data é igual a outra, se é anterior, posterior...
    Vamos criar uma variável que representa hoje e outra amanhã:
      $hoje = new DateTime();
      $amanha = new DateTime('2019-03-01');

    Vamos comparar se elas são iguais:
      var_dump($hoje == $amanha);

    O resultado vai ser: bool(false)

    Agora vamos comparar se amanhã é maior que hoje:
      var_dump($amanha > $hoje);

    O resultado vai ser: bool(true)

    Que bom que deu verdade, né?


    É possível ainda trabalhar com fuso-horário, somar intervalos de tempo, subtrair, definir língua e local que vai usar e uma porção de outros métodos para você usar, para aprender mais, acesse a documentação oficial do PHP:

    http://php.net/manual/pt_BR/class.datetime.php

    Calculando Datas no Futuro e no Passado: strtotime()

    Muitas vezes, é necessário que saibamos a data exata para daqui algum tempo.

    Por exemplo, qual a data daqui 40 dias?
    Que data foi 20 dias atrás?

    Obviamente, não vamos ficar fazendo contas nas mãos.
    Para isso, temos a função strotime()

    Calculando datas no futuro: strotime

    Ela é uma função nativa do GNU Linux e possui uma sintaxe bem simples e acessível.
    Para exibir uma data daqui 40 dias:
    <?php
     $futuro = strtotime("40 days");
     echo date("d/F/Y", $futuro);
    ?>

    Para calcular daqui 3 semanas:
    <?php
     $futuro = strtotime("3 weeks");
     echo date("d/F/Y", $futuro);
    ?>

    2 semanas e 4 dias:
    <?php
     $futuro = strtotime("2 weeks 4 days");
     echo date("d/F/Y", $futuro);
    ?>

    Calculando datas no passado: strotime

    A sintaxe é a mesma, mas vamos usar valores negativos na função strotime().
    Para saber que dia foi 20 dias atrás:
    <?php
     $passado = strtotime("-20 days");
     echo date("d/F/Y", $futuro);
    ?>

    Uma semana atrás:
    <?php
     $passado = strtotime("-1 week");
     echo date("d/F/Y", $passado);
    ?>
    a

    Determinar Número de Dias em um mês no PHP

    Uma grande utilidade de se trabalhar com datas, é saber quantos dias algum mês possui.
    Neste tutorial vamos te mostrar scripts que te ensinam a fazer isso de maneira bem simples.

    Baixar apostila de PHP

    Número de Dias no mês atual

    O código date('t') diz quantos dias o mês possui.
    O mês em questão é representado por: date('F')

    Veja: A função date() e seus parâmetros no PHP

    Assim, um script que mostra o número de dias do mês atual, seria:
    <?php
     echo "Há ".date('t')." dias no mês ".date('F');
    ?>

    A saída é: Há 28 dias no mês February

    Se preferir 'mês 02' ao invés de 'mês February', use:
    <?php
     echo "Há ".date('t')." dias no mês ".date('m');
    ?>

    Mas se preferir: "O mês de Fevereiro tem 28 dias", basta fazer:
    <?php
     setlocale(LC_ALL, 'pt_BR.utf8');
     echo "O mês ".strftime('%B')." tem ".date('t')." dias";
    ?>

    Número de Dias de Qualquer mês

    E quantos dias teve fevereiro de 1988?
    Para cálculos assim, usamos a mktime(), lembra dela?
    mktime( $hora, $minuto, $segundo, $mes, $dia, $ano );

    Basta fazer:
    $ultimo = date('d', mktime(0, 0, 0, 3, 0, 1988 ));

    Ou seja, você vai pegar o dia '0' do mês '3'. É o mesmo que pegar o último dia do mês 2, entendeu?
    Prontinho, a variável $ultimo vai ter o número de dias que teve fevereiro de 1988

    Última Modificação de uma Página: getlastmod()

    Quase sempre, é muito importante saber qual foi a última vez que uma página foi modificada pela última vez.

    Imagine que você tenha um site de promoções e vendas, é essencial exibir a data e o horário nele, pois os usuários precisam saber se ele está sendo atualizado, se as informações estão 'fresquinhas'.

    Última Alteração da Página: Função getlastmod()

    O PHP possui uma função pré-definida muito útil, que exibe a última alteração de uma página, é a getlastmod().

    Teste:
    <?php
     echo getlastmod();
    ?>
    Resultado aqui:
    1551106973
    Ou seja, ele vai te retornar a timestamp.

    Mas você não vai exibir isso pro usuário:
    Última atualização: 1551106973 segundos desde 1 de janeiro de 1970.

    Vamos ter que usar a strftime() junto com a getlasmod() para formatar corretamente (ou a date() caso prefira exibir os dados em inglês).

    Veja como fica nosso código:
    <?php
     setlocale(LC_ALL, 'pt_BR.utf8');
     echo "Última atualização: ".strftime('%d/%B/%G as %H:%M:%S ', getlastmod() );
    ?>
    Resultado:
    Última atualização: 25/fevereiro/2019 as 12:08:28

    Bem mais bonito, não ?

    Data e hora em Português no PHP: setlocale() e strftime()

    Neste tutorial de nosso Curso de PHP, vamos aprender a usar datas e horários locais, no formato e escrita de nossa língua, através das funções setlocale() e strftime().

    Formatos locais: setlocale()

    Até o momento, todas nossas datas e horários tem o formato americano, ou seja:
    12/23/2019

    Primeiro o mês, depois o dia, depois o ano.
    Sendo que no Brasil primeiro usamos o dia primeiro, só depois o mês.

    Quando fizemos:
    echo date("d/F/Y", 1551028815);

    O resultado foi: 24/February/2019
    Mas não queremos 'February', somos brasileiros!

    Queremos é Fevereiro!
    A resposta para isso é setar o local, com a setlocale, basta fazer:
    setlocale(LC_ALL, 'pt_BR');

    Experimente:
    <?php
    	setlocale(LC_ALL, 'pt_BR');
    	echo strftime('%d/%B/%G');
    ?>
    Se não funcionar, experimente:
    <?php
    	setlocale(LC_ALL, 'pt_BR.utf8');
    	echo strftime('%d/%B/%G');
    ?>

    Se vai ser pt_BR ou não, vai depender do que tem instalado em seu servidor.
    LC_ALL é uma constante que serve para definir várias coisas a respeito das datas locais que você vai usar.

    Note que não usamos date(), e sim strftime()

    A função strftime()

    A função date() serve apenas para exibir as coisas em inglês padrão.
    Se quisermos usar outra língua para trabalharmos com data e tempo, precisamos da strftime(), mas ela é bem semelhante a date(), mas usa outros parâmetros, veja:

    %a - dia da semana abreviado
    %A - dia da semana completo
    %b - dia do mês abreviado
    %B - dia do mês completo
    %c - data e hora padrão 04/26/05 21:40:46
    %C - Número do século 21
    %d - Dia numérico do mês, com 0 na frente
    %D - Equivalente a %m/%d/%y
    %e  - Dia numérico do mês, sem o 0 na frente
    %g  - Exibe o ano, mas sem o século (tipo 19 ao invés de 2019)
    %G  - Ano numérico
    %h  - Mesmo que %b
    %H - Horário numérico de 24 horas com 0 na frente
    %I - Horário numérico num relógio de 12 horas, com 0 na frente
    %j - Número do dia do ano de 001 até 366
    %m - Número do mês, com 0 na frente
    %M - Número do minuto,com 0 na frente, de 00 até 59
    %n  - Caractere de quebra de linha \n
    %p - Antes e pós meridiano AM, PM
    %r - Antes e pós meridianos com ponto A.M., P.M.
    %R - Notação de 24 horas 00:01:00 até 23:59:59
    %S - Número de segundos com zero, de 00 até 59
    %t - Caractere de tab \t
    %T - Equivalente a %H:%M:%S 12:23:41
    %u - Dia numérico da semana, onde 1 = domingo
    %U - Número numérico da semana, em que o primeiro domingo é primeiro dia da primeira semana
    %V - Número numérico da semana, em que semana 1=primeira semana com>=4 dias, vai de 01 a 53
    %W - Número numérico da semana, em que a primeira segunda-feira é primeiro dia da primeira semana
    %w - Número do dia da semana, onde 0 = domingo
    %x - Padrão de data local d:m:a
    %X - Padrão de tempo local h:m:s
    %y - Número do ano sem o século
    %Y - Número do ano, com o século
    %Z ou %z - Fuso horário do horário de verão oriental
    %% - Caractere de porcentagem %

    Usando as funções time() e date()

    Neste tutorial de nossa apostila de PHP, vamos aprender a usar a função time() junto da função date() e aprender poderosas técnicas de manipulações de datas.

    Apostila PHP Progressivo (baixar)

    A função time()

    A função time é super mega hiper simples.
    Basta invocar: time()

    Ela retorna um inteiro: o Unix timestamp atual.
    Prontinho. Só isso.

    Por exemplo, eu rodando aqui agora: echo time();
    O resultado é: 1551028815

    Mas convenhamos, esse tanto de segundo, não é muito útil, não quer dizer nada, não dá pra dizer quantos dias, meses ou anos tem aí, não é muito 'legível' para humanos'.

    Concorda?

    Função date() com função time()

    Lembra da função date() ? Responsável por exibir datas e horários de tudo quanto é jeito que você imaginar?

    Pois é, podemos combinar ela com a time e exibir datas de maneira que humanos consigam entender e captar de maneira mais interessante.

    Por exemplo, para exibirmos uma data no formato: dia-mes-ano
    Fazemos: echo date("d/F/Y", 1551028815);

    Note que passamos uma timestamp que obtivemos com a time().

    Podemos ir mais além e mostrar hora:minuto:segundo:
    echo date("d/F/Y - h:i:s", 1551028815);

    Ou seja, pegamos o timestamp atual com a função time() e a função date() com seus inúmeros parâmetros, transforma esse número medonho bizarro em datas bonitas e prazerosas.

    Exemplo de uso de time()

    Crie um script que exibe o horário daqui exatamente uma semana.

    Vamos pegar a timestamp atual:
    $agora = time();

    Agora vamos somar os segundos de uma semana:
    $agora += 7*24*60*60;

    O script que exibe o dia, mês, ano e horário atual e o exatamente daqui uma semana é:
     <?php
      $proxsemana = time()+(7 * 24 * 60 * 60);
      echo "Atual:" .date("d/F/Y - h:i:s", time())."<br/>";
      echo "Semana que vem: ".date("d/F/Y - h:i:s", $proxsemana)."<br/>";
     ?>
    Você pode usar isso para fazer promoções em sites, por exemplo "Você tem apenas uma semana para aproveitar a queima de estoque..."

    Como obter tempo atual: Função gettimeofday() do PHP

    Neste tutorial de nosso curso de PHP, vamos aprender para que serve e como usar a função gettimeofday(), para pegar as informações do momento atual do sistema.

    Apostila de PHP para download

    Obtendo informações atuais: gettimeofday()

    Para obtermos algumas informações do exato instante que o sistema PHP está rodando, usamos a função pré-definida gettimeofday().

    Quando simplesmente invocamos ela: gettimeofday()
    Ela retorna um array, com os seguintes elementos:

    • [sec] - Número de segundos desde a Unix Epoch
    • [usec] - microssegundos atual
    • [minuteswest] - a quantos minutos você está a oeste do meridiano de Greenwich
    • [dsttime] - um inteiro, que representa o horário de verão:


    0 - Sem horário de verão
    1 - Horário dos EUA
    2 - Horário da Australia
    3 - Horário do oeste europeu
    4 - Horário da europa meridional
    5 - Horário do leste europeu
    6 - Horário do Canadá
    7 - Horário de Grã-Bretanha e Irlanta
    8 - Horário da Romênia
    9 - Horário da Turquia
    10- Horário da Austrália, variação de 1986

    Quando eu dou: print_r(gettimeofday());
    O que aparece atualmente para mim é:
    Array (
    [sec] => 1551025438
    [usec] => 880119
    [minuteswest] => 180
    [dsttime] => 0 )

    E para vocês? Deixem nos comentários.

    Como pegar exato instante atual: gettimeofday(TRUE)

    A função gettimeofday()) também aceita como parâmetro o booleano TRUE.
    Quando usamos ele, ela retorna apenas um float, com o instante exato do momento atual, com segundos da Unix Epoch e mais 4 casas decimais de microssegundos.

    Fazendo: print_r(gettimeofday(TRUE));
    Obti: 1551025529.2385

    E vocês?

    Exercício: Tempo de execução de um script

    Uma das funcionalidades da gettimeofday() é descobrir o tempo de execução de um script em PHP.

    Primeiro, pegamos o tempo inicial:
    $d1 = gettimeofday(TRUE);

    Fazemos nosso scripts.

    Depois, pegamos o tempo final:
    $d2 = gettimeofday(TRUE);

    Prontinho, basta subtrair esses valores e teremos o tempo de execução de um script.
    Vamos testar com um "Olá, mundo":
    <?php
     $d1 = gettimeofday(TRUE);
     echo "Olá mundo<br />";  
     $d2 = gettimeofday(TRUE);
     
     echo "Tempo de execução: ".($d2-$d1);
    ?>
    O resultado aqui foi:
    Tempo de execuçãoa: 9.5367431640625E-7

    Ou seja: 0,000000954s

    Bem rápido esse PHP, não?

    Obtendo datas e horários em PHP: Função getdate()

    Neste tutorial de nosso curso de PHP, vamos aprender a usar a função getdate() que nos fornece de maneira completa datas e horários no tempo.



    A função getdate()

    A sintaxe da função é:
    array getdate (int timestamp)

    Ou seja, devemos fornecer um timestamp apenas e ela nos retorna um array completo, de 11 elementos:

    1. hours: Representação numérica da hora do dia, de 0 até 23
    2. mday: Representação numérica do dia do mês, de 1 até 31
    3. minutes: Representação numérica dos minutos, de 0 até 59
    4. mon: Representação numérica do mês, de 1 até 12
    5. month: Nome do mês, escrito, por exemplo Maio
    6. seconds: Representação numérica dos segundos, de 0 até 59
    7. wday: Representação numérica do número da semana. Por exemplo, 0 é domingo
    8. weekday: Nome do dia da semana, por exemplo, Segunda-feira
    9. yday: Representação numérica do dia do ano, de 0 até 365
    10. year: Representação numérica do ano, em 4 dígitos, como 2020
    11. 0: Timestamp, número de segundos desde a Unix epoch
    Bem completa essa getdate(), não?

    Exemplo de uso da getdate()

    No momento que vos escrevo este tutorial, a atual timestamp é:

    1550931619


    Vamos criar um array com esta data:
    $data = getdate(1550931619);

    Agora vamos printar este array:
    print_r ($data)

    (Lembre-se: use print_r para printar arrays)

    O resultado é:
    Array ( 
    [seconds] => 19 
    [minutes] => 20 
    [hours] => 11 
    [mday] => 23 
    [wday] => 6 
    [mon] => 2 
    [year] => 2019 
    [yday] => 53 
    [weekday] => Saturday 
    [month] => February 
    [0] => 1550931619 )

    Exemplo de uso da getdate()

    Crie um script que pega o timestamp ATUAL, desse exato momento (use o parâmetro date correto), mande pra getdate() e imprima o array.

    Mostre o resultado nos comentários.

    Um código mais fácil de entender:
    $data = date("U");
    print_r (getdate($data);

    Ou simplesmente:
    print_r( getdate( date("U") ) );

    A Unix Timestamp e Calculando Segundos com a função mktime()

    Neste tutorial de nossa apostila de PHP, vamos aprender o que é a famosa Unix Timestamp bem como vamos aprender a calcular segundos a partir dela com a função mktime.

    A Unix Timestamp - A Marca Temporal Universal

    Imagine que seu chefe te peça um serviço web onde o usuário digita duas datas completas, com dia, mês, ano e horário, e você tenha que dizer o tempo entre as duas.

    Por exemplo:

    • 5 de abril, 2015, 18h45min e 34s
    • 4 de novembro, 1987, 19h00min e 12s


    Seria um trabalho altamente maçante e chato de fazer, não concorda?
    A solução para isso é simples:
    O primeiro passo é definir uma marca temporal, é a do Unix, a timestamp, e ela é a data 1 de janeiro de 1970, as 00:00:00 UTC (Coordinated Universal Time).

    Depois, basta calcular quantos segundos ocorreram desde a timestamp até hoje e lidar apenas com esse número, fica mais fácil trabalhar com essa formalização.

    A função mktime()

    A função mktime() recebe a data completa e retorna os segundos transcorridos desde a marca temporal do Unix, sua sintaxe é:
    int mktime(int hora, int minuto, int segundos, int mes, int dia, int ano);

    Vamos usar nossos exemplos:
    5 de abril, 2015, 18h45min e 34s: echo mktime(18, 45, 34, 4, 5, 2015)
    Retorna: 1428270334

    4 de novembro, 1987, 19h00min e 12s: echo mktime(19,0,12,11,4,1987)
    Retorna: 563058012

    Diferença temporal: 1428270334 - 563058012 = 865212322s
    A partir daí fica mais fácil trabalhar e transformar em minutos, horas, dias...

    Exercício com a mktime()

    Crie um script que pede o dia, mês, ano e horário de nascimento de uma pessoa e exiba quantos segundos se passaram da timesamp do Unix até a data de nascimento dela.
    <html>
     <head>
      <title>Apostila PHP Progressivo</title>
     </head>
     <body>
     <form action="" method="get">
      Dia<input type="text" name="day" /><br />
      Mês<input type="text" name="month" /><br />
      Ano<input type="text" name="year" /><br />
      Hora<input type="text" name="hour" /><br />
      Minuto<input type="text" name="min" /><br />
      Segundo<input type="text" name="sec" /><br />
      <input type="submit" name="submit" value="Testar" />
     </form> 
     <?php
      $dia = $_GET['day'];
      $mes = $_GET['month'];
      $ano = $_GET['year'];
      $hora = $_GET['hour'];
      $minuto = $_GET['min'];
      $segundo = $_GET['sec'];
      
      echo "Se passaram: ".mktime($hora,$minuto,$segundo,$mes,$dia,$ano)."
            segundos desde que você nasceu";
      
     ?>
     </body>
    </html>

    Exercício com a mktime()

    Agora faça um script que peça a data de aniversário completa do usuário e calcule o tanto de segundos que ele viveu.
    Dica: use os parâmetros da função Date()

    Solução na apostila.

    Como exibir Datas e Horários em PHP: date()

    Neste tutorial, vamos aprender como exibir todo e qualquer tipo de data em PHP, usando a função PHP e seus infinitos atributos.

    Apostila de PHP

    Exibir datas em PHP

    Uma coisa obrigatória que você vai precisa fazer em sua carreira de desenvolvedor web, é exibir datas,

    Exibir dia da semana, do mês, do ano, minutos do dia, quanto segundos faltam pra uma sessão encerrar, quanto tempo o usuário vai estar na sua página e por ai vai.

    Porém, o PHP fornece uma função fantasticamente maravilhosa, a date() que possui trocentos parâmetros, para você exibir datas praticamente do jeito que você quiser:

    • Só os dias
    • Dia da semana
    • Nome do mẽs
    • Abreviação do mês
    • Semana do ano
    • Segundos
    • Minutos
    • Até diferença pro meridiano de Greenwich


    É uma função poderosíssima.

    Sua sintaxe é:
    string date (string parametros)

    Parâmetros da função date()

    Parâmetros Descrição                 Exemplo
    a         Antes e pós meridiano, em minúscuo am or pm
    A         Antes e pós meridiano, em maiúsculo AM or PM
    d         Dia do mês, com 0 na frente         01 to 31
    D         Dia da semana representado por três letras Mon, Sun, etc
    F         Completa representação do mês January até December
    g         Horário no formato de 12 horas, sem 0 1 até 12
    G         Horário no formato de 24 horas, sem 0 1 até 24
    h         Horário no formato de 12 horas, com 0 01 até 24
    H         Horário no formato de 24 horas, com 0 01 até 24
    i         Minutos, com zero                 01 até 60
    I         Horário de verão                 0 se não, 1 se sim
    j         Dia o mês, sem o zero         1 até 31
    l         Texto representando o dia da semana Monday até Sunday
    L         Ano bissexto                 0 se não, 1 se sim
    m         Representação numérica do mês, com 0 01 até 12
    M         Três letras represetando o mês Jan até Dec
    n         Representação numérica do mês, sem o 0 1 through 12
    O         Diferença pro meridiano de Greenwich (GMT) –0500
    r         Data formatada de acordo com o RFC 2822 Tue, 19 Apr 2005 22:37:00 –0500
    s         Segundos, com zeros         01 até 59
    S         Sufixo ordinário do dia                 st, nd, rd, th
    t         Números de dias de um mês         28 até 31
    T         Definição de fuso horário da máquina executora PST, MST, CST, EST, etc.
    U         Segundos desde a época do Unix 1114646885
    w         Representação numérica do dia da semana 0 para domingo e 6 para sábado
    W         ISO-8601 numero da semana do ano 1 até 53
    Y         Representação do ano em 4 dígitos 1901 até 2038 (Unix)
                                    1970 atẽ 2038 (Windows)
    z         Dia do ano                 0 até 365
    Z         Deslocamento do fuso horário em segundos –43200 through 43200


    Exemplos de uso:

    echo "Hoje é ".date("d m, Y");
    // Hoje é 23 ,02, 2019

    echo "Hoje é ".date("F d, Y");
    //Hoje é February 23, 2019

    Você pode ainda formatar do jeito que quiser:
    $diadasemana = date("l");
    $numerodia = date("dS");
    $mesano = date("F Y");

    Fazendo:
    printf("Hoje é %s o %s dia de %s", $diadasemana, $numerodia, $mesano);

    O resultado é:
    Hoje é Saturday o 23rd dia de February 2019

    Trabalhando com horários

    Para exibir um horário, faça:
    echo "A hora exata é ".date("h:i:s");

    Resultado:
    A hora exata é 01:42:27

    Notou o poder e versatilidade da função date()?

    Como checar se uma data é válida em PHP: checkdate()

    Neste tutorial, vamos aprender como verificar se uma determinada data é válida (existente) ou não, em PHP, através da função checkdate().

    Baixar apostila PHP Progressivo

    Verificando datas: Função checkdate()

    Muitas vezes, durante sua carreira de desenvolvedor web PHP, você vai precisar verificar se uma determinada data é válida, ou seja, se ela realmente existiu ou pode existir, como por exemplo, a data de nascimento de uma pessoa.

    Se ela colocou 30/02 de qualquer ano, saiba que é um bot, um vírus ou alguém tentando 'trollar' o sistema, pois fevereiro não tem 30 dias.

    O PHP possui uma função pré-definida, a checkdate(), que determina se uma data é existente ou não e sua sintaxe é:
    boolean checkdate(int month, int day, int year)

    Ou seja, você fornece três inteiros: mês, dia e ano e ela te retorna TRUE se a data for válida e FALSE se não existir.

    Note que primeiro vem o mês. Diferente de nós do Brasil que usamos o dia primeiro, lá fora é o mês que vem antes, ok?

    Por exemplo:
    checkdate(5,5,1988)
    retorna TRUE

    checkdate(2, 29, 2019)
    retorna FALSE, pois 2019 não é bissexto

    checkdate(2,29,2020)
    retorna TRUE, pois 2020 é ano bissexto

    Exemplo de checkdate

    O script abaixo pede dia, mês e ano ao usuário e verificar se tal data é válida ou não:
    <html>
     <head>
      <title>Apostila PHP Progressivo</title>
     </head>
     <body>
     <form action="" method="get">
      Dia<input type="text" name="day" /><br />
      Mês<input type="text" name="month" /><br />
      Ano<input type="text" name="year" /><br />
      <input type="submit" name="submit" value="Testar" />
     </form> 
     <?php
      $dia = $_GET['day'];
      $mes = $_GET['month'];
      $ano = $_GET['year'];
      
      if(checkdate($mes, $dia, $ano))
       echo 'Data válida';
      else
       echo 'Data inválida';
     ?>
     </body>
    </html>

    Método Construtor (Orientação a Objetos em PHP)

    Neste tutorial, vamos aprender o que é e como usar o método construtor em orientação a objetos em PHP.

    Baixar a apostila

    Criação de Objetos

    Um objeto é cheio de informação, cheio de atributos, variáveis, funções, faz isso, faz aquilo e se você for lembrar de fazer tudo ao criar cada coisa, ficaria louco.

    Imagina que é o chefe de TI de uma grande empresa, cada pessoa que entra você tem que registrar nome, setor, salário, carga horária...não ia dar, ia ser muito trabalho manual, e programador é preguiçoso por natureza.

    Existe um método, chamado método construtor, que ele já cria um objeto com diversas informações, automaticamente.
    É o método construtor.

    Método Construtor

    O método construtor é um método como outro qualquer, a primeira diferença é que ele tem o nome da classe. Sempre.
    Se sua classe for "Funcionario", seu método vai se chamar "Funcionario".

    O método construtor tem a característica de sempre iniciar ao criarmos um objeto.
    Sempre que instanciamos um objeto, o método construtor é inicializado.

    Teste:
    <?php
     $nome = $_GET['name'];
     class Empregado {
      var $nome;
      function Empregado()
      {
       echo "Construtor invocado";
      }
     }
    
     $func = new Empregado();
    ?>

    Vai aparecer "Construtor invocado".
    Agora vamos fazer com que este construtor sete a variável $nome da classe.

    Para isso, ao instanciarmos o objeto $func, precisamos passar uma variável.
    Depois, imprimimos a variável $nome do objeto para ver se o método construtor inicializou ela corretamente, veja:
    <?php
     $nome = $_GET['name'];
     class Empregado {
      var $nome;
      function Empregado($nome)
      {
       $this->nome=$nome;
      }
    
     }
    
     $nome = "João";
     $func = new Empregado($nome);
     echo $func->nome;
    
    ?>

    Escopo de Atributos e Métodos: public, private, protected, final e static

    Neste tutorial, vamos aprender algumas palavras-chaves que permitem que nosso escopo tenha um comportamento especial relativo a segurança dos dados contidos.

    Escopo de Atributo Public

    Você pode declarar seus atributos com a palavra chave public antes:

    class Pessoa
    {
    public $nome;
    }

    Isso significa que ele pode ser acessado e alterado do lado de fora por qualquer pessoa ou entidade:
    $alguem = new Pessoa();
    $alguem->nome = "Neil Peart";
    $name = $alguem->nome;
    echo "Nome da pessoa: $name";

    Escopo de Atributo Private

    Esse só pode ser acessado de dentro da clase.

    class Pessoa
    {
    private $nome;
    }

    Para definirmos um valor para esse atributo, temos que criar um método setter:

    class Pessoa
    {
    private $nome;

    public function setNome($name) {
    $this->nome = $name;
    }
    }

    Escopo de Atributo Protected

    Assim como algumas funções querem que variáveis existam somente dentro de seu escopo, podemos querer o mesmo em classes.
    Para isso, usamos a palavra-chave protected:

    class Pessoa
    {
    protected $nome;
    }

    Porém, atributos do tipo protected estão disponíveis para serem acessados e modificados por classes herdadas, o que é uma características não existente no modo private.

    Escopo de Atributo Final

    Fazendo com que uma variável seja final, você previne que ela seja sobrecarregada por uma subclase, ou seja, que outra classe defina um atributo 'por cima' na hora da herança.

    class Pessoa
    {
    final $nome;
    }

    Discutiremos esse assunto mais em detalhes adiante.


    Escopo dos Métodos

    Assim como atributos, métodos também possuem seus escopos de níveis de encapsulação.

    O public, permite que você invoque ele de qualquer lugar do código, como já fizemos alguma vezes.
    Já o privado é mais recluso, não pode ser invocado por subclasses ou objetos instanciados.
    O protected pode ser invocado por suas subclasses e em qualquer lugar da classe, sem problemas.

    Existe ainda um tipo especial, chamado de abstract.
    Ele é declarado na classe pai, porém só é implementado nas classes filhas.

    Por exemplo, a classe:
    class Animal
    {
    abstrc som();
    }

    Só isso.
    Então a classe filha, que vai herdar a classe pai (ainda vamos estudar), é que implementa essa classe.
    Se for um leão, implementa um som.
    Se for uma cobra, implementa outro som.

    Por fim, o escopo final, que assim como no atributo, evita que ela seja sobrescrita por qualquer classe herdada. Ela é a implementação única e final daquele método.

    Propriedades SET e GET

    Fazer download da apostila de PHP

    Propriedades

    Nunca é interessante deixar que nossos atributos e métodos fiquem 100% disponíveis e livres para qualquer um usar, acessar ou até mesmo alterar, isso pode ser uma falha e deixar brecha para hackers invadirem seus sistemas.

    Então, para acessar e alterar alguns tipos de informações, usaremos alguns métodos especiais, chamados accessors ou mutators, cujo único objetivo é alterar ou acessar determinadas informações, mas sob o 'olhar' vigilante e sanguinário do vigia, digo, do objeto, para saber o que está acontecendo de fato ali.

    As funções Get e Set

    Set significa...setar, configurar, colocar...quando setamos uma variável, estamos impondo um valor nela.
    O método setName($name) por exemplo, vai colocar o valor $name na variável $name do objeto.

    Para não confundir as coisas, a variável do objeto é definida pro:
    $this->name
    E a variável que vem de fora por: $name

    Então, um método setName() que seta um nome para a variável do objeto é:
    public function setName($name) {
    $this->name = $name;
    }


    Get significa pegar, acessar...usamos ela para ter controle, pegar alguma informação de uma variável de um objeto, por exemplo, a getName(), retorna o valor da variável $name de um objeto:
    public function getName() {
    return $this->name;
    }


    Note que mais uma vez usamos o $this que serve para se referir ao próprio objeto.

    Classe Empregado

    Então uma classe Empregado, onde pedimos o nome do usuário, setamos o nome dele e depois exibimos, ficaria:
    <html>
     <head>
      <title>Apostila PHP Progressivo</title>
     </head>
     <body>
    
     <form action=ae method="get">
      Digite o nome do funcionario<input type="text" name="name" /><br />
      <input type="submit" name="submit" value="Testar" />
     </form> 
    
     <?php
    
      $nome = $_GET['name'];
    
     class Empregado {
      private $name;
      // Get
      public function getName() {
       return $this->name;
      }
    
      // Set
    
      public function setName($name) {
       $this->name = $name;
      }
     }
     
     $func = new Empregado();
     $func->setName($nome);
     echo "Funcionário: ".$func->getName();
    
    ?>
    
     </body>
    </html>


    Uso real de SET e GET

    O uso mostrado de set e get, são apenas para enfatizar que você não deve deixar que acessem diretamente os dados de atributos.
    O saldo bancário, por exemplo, é um atributo.

    O método get para acessar esse atributo, só deve ocorrer depois do usuário fornecer a senha ou digital dele, provando ser ele o titular da conta, só então ele vai poder acessar o atributo, entende?

    O mesmo jeito o método set.
    Vamos supor que ele tenha mil na conta e queira setar um saque de 1200.
    Não dá amigo.

    Você precisa fazer uma verificação antes de permitir qualquer set. Pra depositar, ok, pode depositar o que for, agora pra sacar, tem regras, não é só sair sacando, a vida real não é assim? Pois é exatamente assim nos sistemas reais bancários, ok?

    Relembre: use métodos para deixarem que acessem suas variáveis,seus sagrados atributos.

    Como Criar Classe, Objeto, Atributos e Métodos

    Neste tutorial, vamos de parar com a teoria e de fato aprender como criar classes, métodos, atributos e métodos.


    Como declarar uma classe: class

    A sintaxe para a declaração de uma classe é:

    class Carro
    {
    //codigo dos atributos
    //codigo dos metodos
    }

    Simplesmente a palavra-chave class, o nome que queremos dar a nossa classe (recomendamos começar com maiúsculo), e o código da classe entre chaves. Prontinho.

    Como declarar um objeto: new

    Após declarar uma classe, já podemos instanciar (como chamamos criar) nossos objetos. Fazemos isso como se fossemos criar novas variáveis, mas elas vão receber: new e o nome da classe e um par de parêntesis.

    Vamos criar alguns carros:
    $gol = new Carro();
    $celta = new Carro();
    $corolla = new Carro();

    Prontinho, agora $gol, $celta e $corolla são instâncias, são objetos e podemos trabalhar com eles diretamente. Mas eles ainda estão vazios, não tem nada dentro deles.
    Que tal definimos a motorização deles?

    Como criar e acessar atributos

    Atributos são características, em outras palavras, são variáveis dentro das classes. Vamos definir uma variável dentro da nossa declaração de classe:

    class Carro
    {
    var $motor;
    }

    Pronto.

    Agora toda vez que você for instanciar um objeto dessa classe, essa variável vai junto. Vamos ver?
    Vamos instanciar um Honda Fit:
    $fit = new Carro();

    Para acessar a varável $motor, usamos o operador: ->

    Vamos definir como 1.5 o motor do seu Fitoso:
    $fit->motor = 1.5;

    Agora rode o código:
    <?php
     class Carro
     {
    
      var $motor;
     }
    
     $fit = new Carro();
     $fit->motor=1.5;
    
     echo "Motor do meu corolla $fit->motor";
    
    ?>

    Como declarar e acessar métodos

    Métodos nada mais são que funções, mas funções que só existem dentro de cada objeto.
    Declaramos as funções dentro da classe, e ao instanciarmos os objetos, eles herdam dela.
    Vamos criar duas funções, a ligar ligar() e a desliga():
    <?php
     class Carro
     {
      var $motor;
      function liga()
      {
       echo "Ligando o carro...vruum!<br/>";
    
      } 
    
      function desliga()
      {
       echo "Desligando o carro...fueeem ! <br />";
      }
     }
    ?>
    Para acessar funções, fazemos:
    $fit - >liga();
    $fi - > desliga();

    Teste:
    $fit = new Carro();
    $fit->motor=1.5;

    $fit->liga();
    echo "Motor do meu corolla $fit->motor<br />";
    $fit->desliga();

    Bem simples e bacana, essa orientação a objetos, não?

    Características da Orientação a Objetos: Polimorfismo, Herança e Encapsulamento

    Neste tutorial, vamos estudar algumas vantagens da orientação a objetos, como o polimorfismo e a herança

    Baixe: Apostila de PHP para download

    Polimorfismo em Orientação a objetos

    Não se preocupe com a quantidade de teoria dada neste início, vamos aprender tudo depois na prática.

    Poli quer dizer várias, morfos maneira. Ou seja, polimorfismos quer dizer várias maneiras de fazer a mesma coisa, e essa é uma característica da orientação a objetos.

    Imagine que a classe Automóvel tenha a função ligar().
    Ora, a maneira de ligar um carro é diferente da maneira de ligar uma moto, que é diferente da maneira de ligar um triciclo e é diferente da maneira de ligar uma mobilete. Mas todos são automóveis, e todos ligam, e todos tem a função (que em orientação a objetos chamamos de métodos) ligar().

    Então, ao executar o método ligar() de um carro ou de uma moto, ele vai ligar, pode ser de uma maneira ou outra, mas vai ligar.
    Isso é polimorfismo, é a capacidade de fazer algo de maneiras diferentes.

    Se você tem um objeto chamado "moto", para ligar ela, vai acionar o método: moto.ligar()
    Se tem uma "BWM", vai chamar o mesmo método: BMW.ligar()

    Porém, cada um deles funciona de uma maneira diferente, internamente, embora todos sejam automóveis.
    Isso é a ideia básica por trás do polimorfismo. O importante é ligar o automóvel.

    Herança em Orientação a objetos

    Uma das características mais interessantes da orientação a objetos, é a da herança, que é a capacidade que uma classe tem de herdar informações de outras classes.

    Vamos supor a classe Funcionario.
    Ela define todos os funcionários de uma empresa.
    O que todos funcionários tem em comum?

    Ué, salário, horário de trabalho, tarefas a fazer...

    Porém, cada funcionário, de cada setor, tem coisas especificas a fazer.

    Os funcionários de TI, herdam as características da classe Funcionário: tem salário, horários a cumprir e tarefas a fazer dentro da empresa.
    Os funcionários de entrega, também herdam algumas características, como salário, horários a cumprir, mas não ficam dentro da empresa, ficam fazendo entregas fora dela.

    O presidente da empresa também é um funcionário, também vai herdar características gerais da classe Funcionário, como salário, mas vai viajar, vai passar dias fora, nem sempre vai estar na empresa.

    O que queremos dizer com isso, é que algumas classes podem herdar informações e métodos de outras classes ditas superiores, assim evitamos escrever muito código.

    Dizemos que a classe Funcionario é uma superclasse.
    A classe TI é uma subclasse, assim como a Entregador é uma subclasse, pois herdam características da classe Funcionario.
    Uma subclasse herda atributos e métodos de uma superclasse.

    Com o uso da herança, você poupa escrever código ao escrever uma classe que difere de outra apenas em algumas detalhes menores e mais específicos.

    Encapsulamento em Programação orientada a objetos

    Até o momento, todo nosso código são ‘pedaços’ soltos, uma função aqui, um formulário ali, e as coisas meio que vão se encaixando.
    Uma função, por exemplo, ela é do script inteiro, qualquer um pode ter acesso a ela e usar como bem entender, isso pode ser bom ou ruim.

    Pode ser bom por facilitar a vida, já que ela deveria ser usada mesmo
    Pode ser ruim porque algumas funções não deveriam ser usadas por algumas pessoas.
    Por exemplo, a galera da TI não deveria ter acesso as funções da galera do setor da Tesouraria da empresa, concorda?

    E é aí que vem o encapsulamento.
    Quando criamos uma classe, definimos basicamente duas coisas dentro dela: informações (atributos) e ações (métodos) e estes são próprios. Somente os próprios objetos tem acesso a seus próprios atributos e métodos.

    Se quiser que um objeto do setor de RH converse com um objeto do setor de TI, você vai ter que fazer um método específico em ambos os lados para que ocorra essa conversa.
    Um objeto não faz ideia do que ocorre dentro de outro. É um mundo a parte. É o encapsulamento.

    Por exemplo, os atributos e métodos do motor de um carro não são acessíveis pelo objeto ar-condicionado, assim esse não pode se meter naquele e ocasionar problema. É cada um no seu quadrado, entendeu?

    PHP - O que são Classes e Objetos

    Neste tutorial vamos (tentar) te ensinar os conceitos de Classe e Objetos em PHP, a base fundamental da programação orientada a objetos.

    Não deixe de ver: Apostila de PHP para Download

    Classes e Objetos

    O conceito mais importante, de longe, para você entender, é o de classe e o de objeto. E também é considera o mais difícil, pois a definição é muito técnica, muito abstrata, mas vamos tentar resolver isso depois com exemplo do mundo real.

    Classes são, em suma, entidades, com suas características e conceitos próprios, como pessoas, veículos, lugares, coisas abstratas, genéricas.
    Cada entidade é definida por um conjunto de características e comportamentos específicos daquela classe.

    As classes é como se fossem uma 'receita' um 'template' de algo tangível, e esse tangível são os objetos.
    Tudo ao seu redor é um objeto. Classes são apenas ideias, generalizações, conceitos, objeto é a parte tangível, existencial da classe.

    Calma, você não vai precisar fumar um pra entender essa viagem toda, vamos partir para o mundo real e entender de fato o que são classes e objetos.

    A Classe Pessoa

    Pessoa é uma classe, é uma generalização.
    Pessoa tem cabeça, tem coração, tem cérebro, tem membro, tem órgãos, tem nome...mas você não conhece nenhuma Pessoa.

    "Como não, PHP Progressivo, ta louco de pedra, tio? Claro que conheço pessoas"

    Não, amigo.
    Você conhece sua mãe, seu pai, o João, a Maria.
    Você conhece pessoas específicas.

    Você não chega em ninguém e essa pessoa diz:
    - Oi, sou pessoa. Tenho nome, e tenho emprego. Tchau.

    Não, ela diz.
    - Sou Maria, sou programadora Web e rica pra caramba.

    Pessoa é uma classe, uma generalização, um conceito.
    Os objetos é que são reais, a Maria é um objeto, você é um Objeto.

    A classe reúne características que todos os objetos tem:
    Todo objeto da classe Pessoa tem nome, tem RG, alguns tem profissão outros não, todos tem pais (embora alguns conheçam ou não)...a classe é uma 'receita' de criar objetos. Entendeu?

    Vamos pra mais um exemplo?

    A Classe Carro

    Carro é um belo exemplo de classe.
    Ele tem suas funções e características.
    Ele serve para se locomover, para refrigerar o ar interno, para prover um somzinho interno, para buzinar, as suas várias partes cumprem cada uma de suas funções...e tem suas características, cada carro tem sua cor, tem seu número de porta, motorização, tipo de câmbio.

    Mas você não chega numa concessionária:
    - Olá, quero um carro
    - Ok, aqui está um carro
    - Obrigado, vou levar
    - É seu, você comprou
    - Vou dirigir meu carro

    Não, carro é uma classe, é uma abstração.
    Você compra objetos: você compra Gol, Celta, Uno, Civic, Corolla...esses são objetos da classe Carro.
    São exemplos específicos.

    Chamamos instâncias.
    A instância Uno tem 2 ou 4 portas, motor 1.0, é bem básico, não tem muita coisa de fábrica.
    Já a instância Corolla, também é um carro, possui motor 2.0 e é mais completo.

    Mas todas as instâncias possuem coisas em comum:
    Possuem portas
    Possuem motor
    Possuem cor
    Possuem peças fazendo funções

    Ou seja, classes são uma espécie de 'receitas' para fazer os objetos.

    E aí, deu pra entender melhor ?
    Notou que vivemos em um mundo de objetos?

    Funções de Arrays em PHP

    Neste tutorial de nosso curso de PHP, vamos estudar diversas funções e operações que são possíveis de se fazer usando arrays.

    Estudar arrays pela apostila de PHP

    Operações com Arrays

    União: $a + $b
    O array $b é anexado ao final do array $a, menos os conflitos de chaves

    Igualdade: $a == $b
    Verdade se $a e $b contém os mesmos elementos

    Identidade: $a === $b
    TRUE se $a e $b contém os mesmos elementos e na mesma exata ordem

    Desigualdade: $a != $b ou $a <> $b
    TRUE se $a e $b não contém os mesmos elementos, ou seja, ao menos um difere

    Não-identidade: $a !== $b
    Verdadeiro caso $a e $b não contenham os mesmos elementos na mesma ordem

    Funções de Adição e remoção de elementos em Arrays

    Adiciona elementos ao final: array_push()

    Sintaxe:
    int array_push(array alvo , variáveis);

    Seja o array: $carros=array("gol", "celta");
    Se fizermos: array_push($carros, "civic", "corolla")
    Vai ficar: $carros=array("gol", "celta", "civic", "corolla");

    Adiciona elementos ao início: array_unshift()

    Funciona igual ao array_push(), mas ao invés de adicionar ao final, adiciona no começo.
    Seja o array: $carros=array("gol", "celta");
    Se fizermos: array_unshift($carros, "civic", "corolla")
    Vai ficar: $carros=array("civic", "corolla", "gol", "celta");

    Retira o último elemento: array_pop()

    Retira e retorna o último elemento do array.

    Sintaxe:
    variavel array_pop(array alvo);

    Seja o array: $carros=array("gol", "celta");
    Se fizermos: $carro = array_pop($carros)
    Temos: $carro = "celta";

    Retira o primeiro elemento: array_shift()

    Funciona igual o array_pop(), mas ao invés de retirar o último elemento, retira o primeiro.

    Se estiver usando arrays numéricos, todos vão 'descer' um degrau numérico.
    Se for em arrays associativos, nada acontece.

    Seja o array: $carros=array("gol", "celta");
    Se fizermos: $carro = array_shift($carros)
    Temos: $carro = "gol";

    Localizando Elementos em um Array

    Localizar se algo está no array: in_array()

    Sintaxe:
    boolean in_array(algo, $array);
    Retorna TRUE se algo está no $array e FALSE caso não esteja.

    Seja $carros=array("gol", "celta", "civic", "corolla");
    Se fizermos:
    in_array("civic", $carros) -> retorna verdadeiro
    in_array("fox", $carros) -> retorna falso

    Localizar key: array_key_existis()
    Sintaxe:
    boolean array_key_existis(key, $array)

    Retorna TRUE se key existe no array e FALSE se não existe.

    Ordenando Arrays

    Classificando arrays: sort()

    Classifica o array em ordem alfabética ou numérica.

    Seja: $numeros = array(2,3,1)
    Fazendo: sort($numeros)
    Fica: $numeros = arrau(1,2,3)

    Seja $estados = array('SP','CE','AL')
    Fazendo: sort($estados)
    Fica: $estados = array('AL', 'CE', 'SP')

    Ou seja, o método sort() classifica alfa ou numericamente os valores de elementos de um array.

    Sabe aqueles filtros:
    "Ordenar por mais procurado"
    "Ordenar por mais barato"

    Pois é, é tudo array e tudo usa sort().
    Esse PHP é mesmo poderoso, não é?

    Classificando em ordem contrária: rsort()

    Inverso da sort()

    Classificação nativa: natsort()

    Procura fazer uma classificação nativa, como uma pessoa faria.

    Seja o array:
    $fotos=array("foto2.jpg", "foto3.jpg", "foto1.jpg");
    Fazendo: natsotr($fotos);
    Fica:$fotos=array("foto1.jpg", "foto2.jpg", "foto3.jpg");

    Mais funções

    Combinando keys e values: array_combine()

    Sintaxe:
    array array_combine( array $key, array $value)

    Ele combina um array de que são serão as keys, o $key, com um que são os valores, o $value.
    Seja:
    $tipo=array('popular', 'sedan');
    $modelo=array('gol', 'civic');
    Se fizermos: $carros = array_combine($tipo, $modelo);

    E dermos um print_r:
    Array ( [popular] => gol [sedan] => civic )

    Número aleatório de elementos: array)rand()

    Sintaxe:
    elementos array_rand($array, numero_aleatorio_elementos);

    Ele pega um array e retorna um número aleatório de elementos.
    Seja $carros=array("gol", "celta", "civic", "corolla");
    Se fizermos:
    $aleatorios = array_rand($carros, 2)

    Aqui retornou: Array ( [0] => 0 [1] => 3 )
    Ou seja, "gol" e "corolla", ele já dá a resposta em array associativo.

    Embaralhar elementos: shuffle()

    void shuffle(array input_array)

    Simplesmente embaralha os elementos de um array.
    Por exemplo, se tiver: $carros=array("gol", "celta", "civic", "corolla");
    E fizer: shuffle($carros);

    O resultado vai ser:
    Array ( [0] => celta [1] => gol [2] => corolla [3] => civic )

    Somando elementos: array_sum()
    array_sum($array)

    Retorna a soma de todos os items que forem somáveis, ou seja, que foram inteiros ou floats.
    Seja:
    $meuArray = array(21, "rush", 12);
    E fizermos: $soma = array_suma($meuArray);
    O resultado séra: $soma=33

    Falamos apenas de algumas poucas funções que podemos fazer com arrays, para ver mais, acesse:
    https://secure.php.net/manual/pt_BR/ref.array.php

    O Loop FOREACH - Laço de arrays

    Neste tutorial de nossa apostila de PHP, vamos aprender o que é e como usar o FOREACH, laço especialmente criado para se usar com arrays.

    Obrigatório: Baixe a apostila PHP Progressivo

    O Laço foreach as ... para arrays numéricos

    Como se já não bastasse o número de laços (while, do while e for) existentes na linguagem, os criadores do PHP desenvolveram um especialmente para se usar com arrays, o foreach as.

    Vamos pegar o array:
    $carros = array('gol', 'celta', 'fox', 'corolla', 'civic');

    Para exibir esses carros usando foreach, fazemos:
     <?php
      $carros = array('gol', 'celta', 'fox', 'corolla', 'civic');
      
      foreach($carros as $car)
       echo "$car <br />";
     ?>
    O que ocorre é o seguinte...fazemos com que o array $car assuma o valor de cada elemento do array maior $carros.

    Assim, o laço foreach percorre todos os elementos do array $carros, onde podemos trabalhar da maneira que quisermos com cada item.

    O Loop foreach as ... para arrays associativos

    Embora não sejam estruturas enumeradas e logicamente organizadas, é possível usar o laço foreach com arrays associativos também.

    Vamos definir um array de chaves e valores da seguinte forma:
    $carros['popular'] = 'celta';
    $carros['sedan'] = 'corolla';
    $carros['premium'] = 'bmw';
    $carros['suv'] = 'hr-v';

    Para exibir da chave e cada valor, com foreach, um por linha, fazemos:
     <?php
      $carros['popular'] = 'celta';
      $carros['sedan'] = 'corolla';
      $carros['premium'] = 'bmw';
      $carros['suv'] = 'hr-v';
      foreach($carros as $chave => $valor)
       echo "$chave : $valor <br />";
     ?>
    A variável $chave vai pegar o valor de cada key do array $carros e a variável $valor o value de cada elemento correspondente, assim podemos acessar e alterar esses elementos da maneira que quisermos.

    Note que é possível percorrer arrays gigantescos, medonhos e ir fazendo alterações, copiando, ou o que for, de uma maneira muito simples e totalmente automatizada com o laço foreach as...que inglês significa "para cada ... como..."

    Ou seja, "para cada elemento do array, trate como"...e o foreach vai sozinho pegando um por um, todos os elementos do array.