PHP Имеет ли двоеточие: в ключе массива какое-то особое значение? - PullRequest
4 голосов
/ 19 февраля 2012

В: Имеет ли двоеточие : в ключе массива какое-либо особое значение?

Из руководства:

Массив может быть создан с помощью языковой конструкции 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 ]

5 голосов
/ 19 февраля 2012

$ex это не массив, а объект.Вот как print_r печатает его, указывая :protected, что поле message помечено как protected в классе Exception.

Двоеточие не имеет никакого специального значения вмассивы.

3 голосов
/ 19 февраля 2012

$ex - это не массив, это объект.Объекты представляют собой более сложные структуры данных, чем массивы.То, что вы видите, является текстовым представлением состояния этого объекта.

Разработчики решили использовать такое же представление, как оно используется для массивов, и они используют разделение двоеточий для предоставления дополнительной информации об атрибутах объекта.и вы не сможете получить доступ к полю, например, $ex['message:protected'].

1 голос
/ 19 февраля 2012

Имеется print_r представление свойств объекта исключения. Они недоступны в нотации массива, если класс не реализует ArrayAccess и свойство не является общедоступным.

Как еще примечание, если бы у вас был такой массив ...

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

... вы можете получить доступ к значению, как обычно, с помощью $array['my:key']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...