Можете ли вы иметь переменные с пробелами в PHP?

Я возился с переменными переменными в 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'] где возникают два вопроса:

  1. Могу ли я как-то получить к нему доступ напрямую с $? Я где-то читал, что вам нужно получить всю переменную в фигурных скобках ({$two words} или я предполагаю ${two words}), но это не сработало.
  2. Можете ли вы на самом деле иметь переменные с пробелами в PHP? Я попытался создать ассоциативный массив с ключами, которые содержат пробелы, и это сработало:

    $a['a space'] = 1;
    echo $a['a space']; // 1
    

1

Решение

echo "$two words"; // error since $two doesn't exist

Проблема в том, что правила интерполяции строк будут останавливаться на первом символе, который недопустим в имени переменной. Это не специфично для переменных переменных как таковых, это специфично для интерполяции строк.

Это будет делать:

echo ${'two words'};

Но поскольку это довольно неудобно и не работает во всех тех же ситуациях, что и допустимые имена переменных (например, интерполяция строк), вам действительно не следует делать это никогда.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]