PHP冒号:在数组键中有什么特别的意义吗?

时间:2012-02-19 14:02:36

标签: php arrays colon

问:数组键中的冒号:是否有任何特殊意义?

从手册:

可以通过array()语言构造创建数组。它采用任意数量的逗号分隔键=>作为参数。价值对。

array(  key =>  value
     , ...
     )

当我在调查异常对象的设置时,我创建了一个错误条件并将此行放入 -

print_r($ex);

然后在生成的网页中查看了源代码并生成了这样的输出 -

Exception Object

(

[message:protected] => DB connection error: SQLSTATE[28000] [1045] Access denied for user 'test'@'localhost' (using password: YES)

[string:Exception:private] => 

:中的冒号[message:protected]是重要的还是键的关键=>值字对message:protected

3 个答案:

答案 0 :(得分:5)

$ex不是数组,而是对象。这就是print_r打印它的方式,通过:protected表明message类中的protected字段已标记为Exception

冒号在数组中没有任何特殊含义。

答案 1 :(得分:3)

$ex 数组,它是一个对象。对象是比数组更复杂的数据结构。你看到的是这个对象状态的文本表示。

开发人员决定使用与数组一样的表示,并使用冒号分隔来提供有关对象属性的更多信息。

冒号没有意义,你将无法访问一个字段,例如$ex['message:protected'].

答案 2 :(得分:1)

你所拥有的是print_r对异常对象属性的表示。除非类实现ArrayAccess且属性是公共的,否则无法使用数组表示法访问它们。

另外请注意,如果你有这样的数组......

$array = array(
    'my:key' => 'my:value'
);

...您可以像$array['my:key']

一样访问该值