Может кто-нибудь объяснить, что происходит в этом задании? Где я могу прочитать руководство?
${0} = 1;
Может кто-нибудь объяснить, что происходит в этом задании? Где я могу прочитать руководство?
${0} = 1;
Это называется Variable Variables
. Хотя это не очень хорошо, потому что ему удается определить переменную ${0}
.
Вы можете прочитать об этом здесь: http://php.net/manual/en/language.variables.variable.php
Технически в этом конкретном случае это не переменная переменная. Edit: Просто видел, что вы упомянули это: P – WheatBeak
Да, вы правы. Но это функция, позволяющая такой конструкции быть возможной в PHP. Упрощенный комментарий :) –
${0}
в данном конкретном случае является способом назвать переменную с номером, но вы должны быть уверены, чтобы назвать переменную таким же образом, потому что $0
не будет работать.
Другие примеры:
${'foo'} = 'bar';
echo $foo;
будет эхо bar
потому ${'foo'} =
и $foo =
, по существу, то же самое.
это позволяет выполнять операции со строками в вашем определении переменного: как:
$string = 'foobar';
${str_replace('foo','bar',$string)} = 'foofoo';
echo $barbar;
отзовется foofoo
Кроме того, используя фигурные скобки вокруг переменных в анализируемой строке будет гарантировать, что анализатор Безразлично» t запутаться. Например:
$car = "Buick";
echo "The cars were all $cars"; // won't work because it will look for variable $cars
echo "The cars were all {$car}s"; // OR
echo "The cars were all ${car}s"; // will both echo The cars were all Buicks
Есть еще варианты использования фигурных скобок в именах переменных, см ссылку на другой ответ, чтобы узнать больше.
Помните, что фигурные скобки буквально означает «оценить, что внутри фигурных скобок» таким образом, вы можете сжать переменную создание переменной в одной строке, например:
<?php
${"title_default_" . $title} = "selected";
?>
, а затем, , например:
<?php
$title_select = '
<select name="title">
<option>Select</option>
<option $title_default_Mr value="Mr">Mr</option>
<option $title_default_Ms value="Ms">Ms</option>
<option $title_default_Mrs value="Mrs">Mrs</option>
<option $title_default_Dr value="Dr">Dr</option>
</select>';
echo $title_select;?>
Вы можете прочитать больше об этом http://docs.php.net/manual/en/language.variables.variable.php
мы можем играть еще больше!
Вы не можете получить к ним доступ с «нормальными» глобальными переменными, но фигурная фигурная скобка работает так же, как и с ними через суперглобальную переменную $ GLOBALS! Значения преобразуются в строки, которые почему 0xFF => '255' и т.д.
${007} = 'Hello Peter'; // $GLOBALS['7']
${0xFF} = 'Hello Peter'; // $GLOBALS['255']
${2 + 2} = 'Hello Peter'; // $GLOBALS['4']
${'Hello Peter'} = 'Hello Peter'; // $GLOBALS['Hello Peter']
${'cats, pet food, dogs'} = 'Hello Peter'; // $GLOBALS['cats, pet food, dogs']
Что здесь вопрос? – apokryfos
Я получаю 'Примечание: неопределенная переменная: 0 в test.php в строке 1' – Halcyon
Попробуйте (все работает) - такой код используется в надежном проекте error_reporting (E_ALL); $ {0} = 1; var_dump ($ {0}); – yeryr