note 43348 added to language.references.return

From: Date: Fri, 18 Jun 2004 05:30:13 +0000
Subject: note 43348 added to language.references.return
Groups: php.notes 
Request: Send a blank email to php-notes+get-71277@lists.php.net to get a copy of this message
Any good soul can translate this note to english? if ($answer == 'yes') { echo 'THANX A LOT!' } Complementando o que foi dito por "i at tc dot se" e talvez até a documentação (se já não foi dito em algum lugar que eu não vi): Se uma chave inexistente de um array for retornada por referência, esta chave será definida com valor NULL e a referência ao valor da chave será feita. Trocando palavras por códigos: <?php $somearray = array('bla', 'dhu'); print_r($somearray); /* prints Array ( [0] => bla [1] => dhu ) */ $value_of_a_inexistent_key = $somearray[9]; print_r($somearray); /* prints Array ( [0] => bla [1] => dhu ) * nada no array foi alterado * $value_of_a_inexistent_key === NULL * PHP Notice: Undefined offset: 9 in __FILE__ on line __LINE__ */ $reference_of_a_inexistent_key = &$somearray[9]; print_r($somearray); /* prints Array ( [0] => bla [1] => dhu [9] => ) * o array foi alterrado! * $somearray[9] === null * $reference_of_a_inexistent_key === &$somearray[9], ou seja, * a variável, de fato, 'aponta' para a recém criada chave do array e, por isso, também tem valor NULL. A prova de que a variável é uma referência para o valor da chave do array está no código abaixo. */ $reference_of_a_inexistent_key = 'some value'; print_r($somearray); /* prints Array ( [0] => bla [1] => dhu [9] => some value ) */ ?> LEMBRE-SE de que uma chamada unset($reference_of_a_inexistent_key) não "apagará" a chave do array nem destruirá o seu valor, somente a variável '$refer...' sumirá do mapa. Note ainda que este comportamento não acontece somente para chaves numéricas, e sim para qualquer tipo de chave de array válida (string, boolean, ...) e ainda para colchetes vazios '[]'. No caso de '[]', a chave criada segue o mesmo padrão de criação de quando utilizada esta sintaxe para atribuição, assim sendo, e partindo de: $somearray = array('bla', 'dhu'); uma declaração do tipo (agora dando um nome mais viável para a variável): $reference_to_new_key = &somearray[]; fará com que a chave numérica '3' seja adicionada ao array e também fará a variável 'apontar' para a chave '3' do array, portanto, referenciando o seu valor. Este comportamente foi observado na versão 4.3.7 (atual nesta data) do PHP. Espero que esta nota ajude a compreender melhor a referência a 'partes' dos array e também que salve algum tempo quando algum comportamento bizarro =P aparecer no seu código. ---- Manual Page -- http://www.php.net/manual/en/language.references.return.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+43348 Delete -- http://master.php.net/manage/user-notes.php?action=delete+43348&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+43348&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#71277) next »