问:数组键中的冒号:
是否有任何特殊意义?
从手册:
可以通过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
?
答案 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']