Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Isso é um pouco raro acontecer, mas eu não vi sentido, e nem uma lógica muito clara quanto a uma questão de um simulado do Zend PHP Certification Exam.
A pergunta é: Qual a saída desse código?
<?php
define('FOO', 10);
$array = array(10 => FOO,
"FOO" => 20);
print $array[$array[FOO]] * $array["FOO"];
?>
É 200. Porém, pelo que percebi, na penúltima linha, na primeira variável, eu consigo chamar o Array de forma invertida.
Alguém tem como esclarecer as coisas pra mim? Qual finalidade, sentido, um exemplo, talvez.
Alguém?
Eu quis dizer, que na suposição de chamar o Array de forma invertida, é ao invés de eu chamar o indíce, eu chamo o resultado dele que me retorna o indíce.
Compreendeu?
Acho que no exemplo a finalidade seria apenas dificultar e fazer o participante usar da lógica, mas programando de verdade isso pode ser feito para deixar o código mais dinâmico de acordo com alguma necessidade.
Para entender o código basta você fazer algumas substituições de valores:
print $array[$array[FOO]] * $array["FOO"]; // $array["FOO"] = 20;
print $array[$array[FOO]] * 20; // FOO = 10;
print $array[$array[10]] * 20; // $array[10] = 10;
print $array[10] * 20; // $array[10] = 10;
print 10 * 20;
print 200;
Exemplo:
<?php
$remover = $_GET['remover']; // índices para serem removidos
$cores = array('azul','amarelo','preto','cinza','rosa');
unset($cores[$remover[0]]);
unset($cores[$remover[1]]);
unset($cores[$remover[2]]);
print_r($cores);
No exemplo acima eu posso receber uma array do "$_GET" com 3 valores que representam 3 índices que eu vou excluir da minha array cores.
Se você digitar o exemplo acima com a URL:
localhost?remover[]=4&remover[]=1&remover[]=3
Ele vai remover os índices "1", "3" e "4" da array cores.
O mesmo pode ser feito com funções que podem retornar o índice da array.
Exemplo:
<?php
$remover = $_GET['remover']; // cor para ser removida
$cores = array('azul','amarelo','preto','cinza','rosa');
unset($cores[array_search($remover)]);
print_r($cores);
O exemplo acima vai receber o nome de uma cor pelo "$_GET", buscar o índice da cor com "array_search" e dar "unset" no índice encontrado.Eu fiz a mesma coisa que você disse. E oque eu queria entender eu consegui, ele é um ping pong. Ele pega e inicia a váriavel $array, e depois recupera a constante que na verdade determina o índice (10) do array da váriavel $array, porém o resultado do índice 10 deste array é o valor da constante, que é 10.
Portanto, o valor dele será o valor da constante. Porém, ele gera uma dependencia, porque se o valor da constante não existir como um indice, exibirá um erro.
Era isso que eu queria entender. A finalidade, é claro, é forçar a lógica! Hehe.
Portanto, o valor dele será o valor da constante. Porém, ele gera uma dependencia, porque se o valor da constante não existir como um indice, exibirá um erro.
Exato, mas se tratando de certificação Zend, eles fazem isso só pra te forçar a pensar mais e complicar um pouquinho, pra ver se você está em dia com a sintaxe da linguagem...
{none}
Não entendi muito bem o que você quis dizer com "chamar a array de forma invertida."