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

2022-08-30 23:11:24

这是不好的做法/可能会导致问题吗?

$_SESSION['stuff to keep']

而不是调用指数。str_replace()


答案 1

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

// 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()object

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


答案 2

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

但是,如果您使用的是提取函数,则可能会导致某种问题。如果它创建名称中带有空格的变量(不知道是否会),则很难(但并非不可能)访问您的变量。


推荐