PHP: использование пробелов в индексах ассоциативного массива

Является ли эта плохая практика / может вызвать проблемы?

$_SESSION['stuff to keep'] 

В отличие от вызова str_replace() по индексам.

Это плохая практика, но не из-за пространства.

 // file foo.php $_SESSION['stuff to keep'] = 42; // file bar.php if ($_SESSION['stufft o keep'] == 42) frobnicate(); 

Здесь ваш код бесшумно нарушает правила, и ошибка может занять некоторое время. Хорошей практикой является использование PHP-принудительного имени, такого как константа класса:

 $_SESSION[Stuff::TO_KEEP] = 42; if($_SESSION[Stuff::TOO_KEEP] == 42) // error: no constant TOO_KEEP in class Stuff 

Затем вы можете определить эту константу для любой константы, которую вы найдете интересной или читаемой, например, "stuff to keep" (с пробелами). Конечно, extract() и casting to object больше не будут работать, но вы не должны делать это в любом случае со своей сессией.

Внесение введенного пользователем текста в ключи сеанса – это, конечно, вопиющая ошибка безопасности.

Вы можете это сделать, это сработает – и даже если я вообще не делаю этого, когда я устанавливаю ключи своих массивов «вручную», иногда это происходит, когда я получаю ключи из файла (например) , и у меня никогда не было проблем с этим.

Возможно, это может вызвать какую-то проблему, если вы используете функции extract . Если он создает переменные с пробелами в своих именах (не знаю, будет ли это), будет сложно (но не невозможно) получить доступ к вашим переменным.

Это не вызовет проблемы, но ключи массива обычно считаются именами переменных, поэтому их следует выбирать с одинаковыми соображениями

Кажется, добавление лишних пробелов по моему мнению … Обычно я не использую пробелы. Если вы это сделаете, убедитесь, что вы указываете ключи массива.