SóProvas


ID
879571
Banca
FEPESE
Órgão
FATMA
Ano
2012
Provas
Disciplina
Programação
Assuntos

Analise o trecho do código abaixo, escrito na linguagem PHP:

<?php
$cliente = explode(';',"1001 ; Raul Teixeira ;
1977-12-01");
$cliente[ ] = foor(abs(strtotime($cliente[2]) -
   strtotime(date('Y/m/d')))/60/60/24/365);
$cliente[2] =
date('d/m/Y',strtotime($cliente[2]));
print_r($cliente);
?>


Assinale a alternativa correta referente à saída do script acima:

Alternativas
Comentários
  • O trecho de código das linhas 4-5 possui um erro:

    $cliente[ ] = foor(abs(strtotime($cliente[2]) - strtotime(date('Y/m/d')))/60/60/24/365);

    A suposta função foor() na verdade se refere a uma função matemática floor() que retorna o próximo inteiro inferior mais próximo a partir de um número float passado como parâmetro. Neste caso, provavelmente houve um erro de digitação.

    Neste mesmo trecho de código, à variável $cliente é adicionado um novo elemento ao array (uso do $cliente[ ]), cujo seu valor é o resultado da sequência de operações matemáticas realizadas sobre as datas.

    Por eliminação, a única resposta condizente com o código fonte fornecido na questão é a alternativa "D".

  • explode

    (PHP 4, PHP 5)

    explode — Split a string by string

    Description ¶

    array explode ( string $delimiter , string $string [, int $limit ] )

    Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string delimiter.

    _________________________________

    strtotime

    (PHP 4, PHP 5)

    strtotime — Parse about any English textual datetime description into a Unix timestamp

    Description ¶

    int strtotime ( string $time [, int $now = time() ] )

    The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 UTC), relative to the timestamp given innow, or the current time if now is not supplied.


  • Somente para aquecer os neurônios:


    1) $cliente é iniciado com : Array ( [0] => 1001 [1] => Raul Teixeira [2] => 1977-12-01 ) 


    2) abs( strtotime($cliente[2]) -  strtotime(date('Y/m/d') ) é a diferença entre o 'timestamp" (número de segundos em relação à 01/jan/1970) de cada data, corresponde ao número de segundos entre a data 01/dez/1977 e data corrente (date('Y/m/d'),


    3) o valor acima é dividido por sucessivamente por /60/60/24/365 , em outras palavras, equivale a dividir por (60 * 60 * 24 * 365) que corresponde ao número de segundos de um ano.


    4) o arrendamento para baixo (floor) da divisão resulta no números de anos entre a data corrente e 1977 (anos completos, não levando em consideração, no cálculo, os anos bissextos), confiram: 1977 + 34 = 2011;  vejam que é o valor 34 que aparece na alternativa D, provavelmente esta prova foi aplicada antes de 01/dez/2012 ... senão o correto seria 35.