SóProvas


ID
2832250
Banca
UFPR
Órgão
COREN-PR
Ano
2018
Provas
Disciplina
Programação
Assuntos

Dado o código em PHP 5 ou superior abaixo:

$m = array("Um ","Dois ",3 => "Três ","Quatro ",);
foreach($m as $x => $y)
print $x;

O que será gerado pelo comando “print $x”?

Alternativas
Comentários
  • Gabarito letra E


    php > print_r($m);

    Array

    (

      [0] => Um 

      [1] => Dois 

      [3] => Três 

      [4] => Quatro 

    )


  • alguem explica por favor

  • @Tatá:

    O array proposto é do tipo associativo, cujo formato é ÍNDICE => VALOR. Aí a questão trouxe um array assim:

    ........um

    ........dois

    3 => três

    ........quatro

    Note que dos 4 campos, 3 não têm o seu respectivo índice, somente o valor. Aí a questão traz o seguinte:

    foreach($m as $x => $y) print $x; Traduzindo: para cada par chave-valor ($x => $y), imprima a chave ($x). Sendo assim, ele pede que seja impresso as chaves do array.

    Como o array não tem todas as chaves estabelecidas, ele vai imprimir começando da posição 0, depois na posição 1. Quando chegar na posição 2, temos uma chave (3), que deverá ser impressa. A partir daí, ele segue imprimindo as demais chaves, mas seguindo a ordem da última chave. A última foi 3, então a próxima é 4.

    Vai ser impresso na tela 0, 1, 3, 4.

    Não sei se ficou claro, qualquer dúvida me mandem mensagem.

  • Quando não declarado, os índices ficam subentendido, iniciando sempre de 0.

    No caso do array em questão:

    m = array("Um ","Dois ",3 => "Três ","Quatro ",); 

    O primeiro elemento recebeu o índice 0, o segundo 1, o terceiro elemento recebeu um índice definido como 3 (caracterizando um array associativo) e, por fim, o quarto elemento como não foi definido nenhum índice o PHP considera o último valor válido do índice e incrementa (nesse caso o último índice foi 3).

    A alternativa correta é:

    (E) 0, 1, 3, 4

  • Para entender certinho, mude o print para "print $x . $y;" e execute.