Я видел, что это часто используется, особенно с SimpleXML.
Это:
$row->unixtime
просто так же, как это делать ???
$row[unixtime]
Что это называется, почему / как его использовать?
Объектно-ориентированное программирование с помощью PHP
$row->unixtime
$ row – это объект. unixtime является свойством этого объекта.
$row[unixtime] // I hope you meant $row['unixtime'];
$ row – это (ассоциированный) массив. unixtime – это ключ в этом массиве.
Спросить «Какие объекты» немного расплывчато.
Начало работы с ООП – это не тривиальная задача. Для изучения синтаксиса и нюансов требуется некоторое время, чтобы понять преимущества и годы (возможно) эффективно использовать его.
Это совершенно другое дело.
Первый, $row->unixtime
означает, что вы $row->unixtime
доступ к открытой переменной $unixtime
объекта / экземпляра класса $row
. Это объектно-ориентированное программирование .
Пример:
class example{ public $unixtime = 1234567890; } $row = new example(); echo $row->unixtime; // echos 1234567890
Второй, чтобы получить ключ 'unixtime'
массива $row
. Это называется ассоциативный массив . Пример:
$row = array( 'unixtime' => 1234567890 ); echo $row['unixtime']; // echos 1234567890
Вы можете легко преобразовать объекты и массивы с помощью (array)
и (object)
. Пример:
$row = array( 'unixtime' => 1234567890 ); $row = (object)$row; echo $row->unixtime; // echos 1234567890
Вне темы: Я действительно пропустил эпоху unix 1234567890 в феврале.
Нет, они не то же самое. Речь идет о объектно-ориентированном программировании .
->
указывает на доступ к члену объекта. Например:
class Test { public $foo; public $blah; } $test = new Test; $test->foo = 'testing';
[]
– это оператор доступа к массиву, используемый истинными массивами. Объекты также могут использовать его, если они реализуют интерфейс ArrayAccess
:
class Test2 implements ArrayAccess { private $foo = array(); public function offsetGet($index) { return $this->foo[$index]; } // rest of interface } $test2 = new Test2 $test2['foo'] = 'bar';
Чтобы ваш ответ был коротким и сладким …
$row->unixtime
Это объект
$row[unixtime]
Это массив
Вероятно, еще одна идиома вытащила из языка C , на самом деле это то, на чем написан PHP. Многие функции PHP, синтаксис и операторы и даже многие из родных функций PHP имеют свои корни в C.