PHP:在关联数组索引中使用空格

Nic*_*ner 17 php associative-array

这种不良做法/会导致问题吗?

$_SESSION['stuff to keep']
Run Code Online (Sandbox Code Playgroud)

而不是呼吁str_replace()指数.

Vic*_*let 18

这是不好的做法,但不是因为空间.

// file foo.php
$_SESSION['stuff to keep'] = 42;

// file bar.php
if ($_SESSION['stufft o keep'] == 42) frobnicate();
Run Code Online (Sandbox Code Playgroud)

在这里,您的代码默默地行为不端,并且该bug可能需要一段时间才能找到.好的做法是使用PHP强制名称,例如类常量:

$_SESSION[Stuff::TO_KEEP] = 42;

if($_SESSION[Stuff::TOO_KEEP] == 42) 
// error: no constant TOO_KEEP in class Stuff
Run Code Online (Sandbox Code Playgroud)

然后,您可以将该常量定义为您感兴趣或可读的任何常量,例如"stuff to keep"(使用空格).当然,extract()并且施放object将不再起作用,但你不应该在你的会话中这样做.

当然,允许用户输入的文本进入会话密钥是一种明显的安全性错误.


Pas*_*TIN 8

你可以这样做,它会工作 - 即使我通常不会"手动"设置我的数组的键时,它有时会发生在我从文件中获取密钥时(例如),我从来没有遇到任何问题.

但是,如果您正在使用这些extract功能,这可能会导致某种问题.如果它创建了名称中带有空格的变量(不知道是否会这样),那么访问变量将很困难(但并非不可能).


Ada*_*son 5

它不会导致问题,但数组键通常被视为变量名,因此应该以相同的考虑选择