2016-03-03 3 views
0

Может кто-нибудь объяснить, что происходит в этом задании? Где я могу прочитать руководство?

${0} = 1; 
+0

Что здесь вопрос? – apokryfos

+0

Я получаю 'Примечание: неопределенная переменная: 0 в test.php в строке 1' – Halcyon

+0

Попробуйте (все работает) - такой код используется в надежном проекте error_reporting (E_ALL); $ {0} = 1; var_dump ($ {0}); – yeryr

ответ

0

Это называется Variable Variables. Хотя это не очень хорошо, потому что ему удается определить переменную ${0}.

Вы можете прочитать об этом здесь: http://php.net/manual/en/language.variables.variable.php

+1

Технически в этом конкретном случае это не переменная переменная. Edit: Просто видел, что вы упомянули это: P – WheatBeak

+0

Да, вы правы. Но это функция, позволяющая такой конструкции быть возможной в PHP. Упрощенный комментарий :) –

1

${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 

Есть еще варианты использования фигурных скобок в именах переменных, см ссылку на другой ответ, чтобы узнать больше.

+0

'$ {0}' или '$ {123}' does work – Zimmi

+0

Ах, глупо меня, я тогда пытался назвать это $ 0 – WheatBeak

+0

Попробуйте (все работает) - такой код используется в надежном проекте: error_reporting (E_ALL); $ {0} = 1; var_dump ($ {0}); – yeryr

0

Помните, что фигурные скобки буквально означает «оценить, что внутри фигурных скобок» таким образом, вы можете сжать переменную создание переменной в одной строке, например:

<?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'] 
Смежные вопросы