Есть ли логическое объяснение этому?
<?php
$$a = 'hello world';
echo $$a; //displays hello world
echo $$aa; //displays hello world
echo $$aaa; //displays hello world
?>
Есть ли логическое объяснение этому?
<?php
$$a = 'hello world';
echo $$a; //displays hello world
echo $$aa; //displays hello world
echo $$aaa; //displays hello world
?>
если вы попробуете
$$a = 'hello world';
echo $$a; //displays hello world
echo $$aa; //displays hello world
echo $$aaa; //displays hello world
die( "<pre>" . print_r( get_defined_vars(), true ) . "</pre>" );
Вы можете видеть, что он зарегистрировал переменную без имени, поэтому да, в соответствии с соглашениями об именах PHP, это будет ошибка
При выполнении
$$a = 'foo';
вы говорите, возьмите значение $a
. Преобразуйте его в строку. Используйте имя переменной String as, чтобы присвоить ей 'foo'
. Поскольку $a
- undefined и возвращает NULL
, который, когда typecasted для String равен ''
, назначает переменную ${''}
;
echo ${''}; // 'foo'
Как ни странно, вы можете сделать
${''} = 'foo'; /* but not */ $ = 'foo';
И вы можете сделать
${''} = function() { return func_get_arg(0); };
echo ${''}('Hello World');
// or
echo $$x('Hello World');
из-за чего уведомление о $x
будет undefined, но будет выводиться Hello World
. Забавно, следующее не работает:
${''} = function() { return func_get_arg(0); };
echo $x('Hello World');
Потому что он вызывает Fatal error: имя функции должно быть строкой. Причудливый: D
Поскольку в руководстве по PHP говорится
Переменные имена соответствуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания.
Я бы подумал о возможности присвоить пустую именованную переменную ошибку.
Для этого уже есть несколько связанных ошибок:
Я уверен, что он определяет переменную как нечто действие ${''}
или переменную без имени или что-то в этом направлении.
Поскольку ни $a
, ни $aa
, ни $aaa
не определены, все они указывают на то же самое фанковое пустое имя переменной при использовании в контексте переменных переменных.
Ну, если $a пуст, тогда вы устанавливаете пустое имя переменной для = 'hello world'... Итак, каждый раз, когда вы ссылаетесь на это имя пустой переменной, вы получаете то, что там хранится...
Это просто как
$a = '';
$$a = 'Foo Bar';
$b = '';
echo $$b; //Displays Foo Bar
Вы не понимаете, правильно ли это:
$a = 'hello';
$hello = "hello again";
echo $$a;
Вывод:
hello again
В вашем случае вы не задали значение следующих переменных, поэтому оно выводит то же самое.
Объяснение:
Когда вы выполняете $$a
, это означает:
$ $a;
^ ^
$ used for php vars means a value that is hello
Так оно и будет:
$hello
Чье значение:
hello again