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

时间:2010-01-04 23:22:50

标签: php associative-array

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

$_SESSION['stuff to keep']

与在索引上调用str_replace()相反。

4 个答案:

答案 0 :(得分:18)

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

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

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

在这里,你的代码默默地行为不端,这个bug可能需要一段时间才能找到。好的做法是使用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将不再有效,但您不应该在会话中这样做。

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

答案 1 :(得分:8)

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

但是,如果使用extract函数,可能会导致某些问题。如果它创建了名称中带有空格的变量(不知道是否会)那么(但不是不可能)很难访问你的变量。

答案 2 :(得分:3)

它不会导致问题,但数组键通常被视为变量名,因此应选择相同的注意事项

答案 3 :(得分:0)

在我看来似乎添加了不必要的空白......我通常不会使用空格。但是,如果你这样做,请确保引用数组键。