Я возился с переменными переменными в PHP, поэтому я придумал код:
$a = 'two words';
$$a = 'something';
echo $$a; // outputs something
echo "$two words"; // error since $two doesn't exist
Я просто пытался понять, как будет вести себя PHP, если у нас есть строка с пробелами, и попытался сделать переменную переменной из нее. И кажется, что он по-прежнему хранит переменную с пробелами, так как я сделал var_dump($GLOBALS);
и у меня есть это:
'a' => string 'two words' (length=9)
'two words' => string 'something' (length=9)
Я могу получить доступ к переменной «два слова» через $GLOBALS['two words']
где возникают два вопроса:
$
? Я где-то читал, что вам нужно получить всю переменную в фигурных скобках ({$two words}
или я предполагаю ${two words}
), но это не сработало. Можете ли вы на самом деле иметь переменные с пробелами в PHP? Я попытался создать ассоциативный массив с ключами, которые содержат пробелы, и это сработало:
$a['a space'] = 1;
echo $a['a space']; // 1
echo "$two words"; // error since $two doesn't exist
Проблема в том, что правила интерполяции строк будут останавливаться на первом символе, который недопустим в имени переменной. Это не специфично для переменных переменных как таковых, это специфично для интерполяции строк.
Это будет делать:
echo ${'two words'};
Но поскольку это довольно неудобно и не работает во всех тех же ситуациях, что и допустимые имена переменных (например, интерполяция строк), вам действительно не следует делать это никогда.
Других решений пока нет …