|
|
|
| Кто-нибудь может обьяснить природу даного поведения интерпретатора:
<?php
$a=$b
echo $a;// интерпретатор ругается на отсутсвие переменной $b- все тут понятно.
////////////////////////////////////////
$a=&$b;
echo $a;// интерпретатор молчит. тоесть на отсутвие переменной он ругается а на ее ссылку нет? в чем подвох?
?>
|
| |
|
|
|
|
|
|
|
для: demonow
(18.01.2012 в 16:43)
| | А чего бы ему ругаться? Ссылки никто не отменял (передача параметров по ссылкам внутрь функций устарела, вернее явное указание ссылки, так как они теперь неявно используются). Вот смотрите, $b не будет равно 3, и $a и $b указывают на один и тот же участок памяти - поменяйте его и обе переменные поменяют свое значение, это и есть ссылки (скажите спасибо, что указателей нет :).
<?php
$a = 3;
$b = &$a;
$a++;
echo $b; // 4
?>
|
| |
|
|
|
|
|
|
|
для: demonow
(18.01.2012 в 16:43)
| | Или вы про то, что интерпретатор не выдает замечание, так переменная $b создается при первом обращении, кроме того, чего ругаться, если обе переменные указывают на одну и ту же область памяти, т.е. явно инициализированы и пользователь понимает что делает, раз уже стал ссылки использовать. | |
|
|
|
|
|
|
|
для: cheops
(18.01.2012 в 17:55)
| | Непонятность возникла из-за того, что при коде я думал что переменная $b уже должная иметь значение, тоесть где-то вверху определена b и мы просто делаем для нее ссылку, а здесь получается мы присваеваем переменной $a глухую ссылку без значения.Надеюсь обьяснил свои соображения))
я ж из-за чего так парюсь.Просто в книге есть такой код
function fun()
{
$a=&$GLOBALS['a'];
$a=10;
}
fun();
echo $a;
|
| |
|
|
|