关于$ variable-> PHP的故事是什么?

时间:2009-11-04 03:57:16

标签: php oop

我见过这个用过,特别是SimpleXML。

这是:

$row->unixtime

就像这样做???

$row[unixtime]

这叫什么,为什么/应该如何使用?

5 个答案:

答案 0 :(得分:24)

Object Oriented Programming with PHP

$row->unixtime

$ row是一个对象。 unixtime是该对象的属性。

$row[unixtime] // I hope you meant $row['unixtime'];

$ row是一个(关联)数组。 unixtime是该阵列中的关键。

询问'对象是什么'有点模糊。

开始使用OOP并非易事。学习语法和细微差别需要花费很长时间,有时需要更多时间来理解它们的优点,并且需要多年(可以说)才能有效地使用它。

答案 1 :(得分:10)

完全不同。

第一个$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

偏离主题:我实际上错过了2月份的unix纪元时间1234567890.

答案 2 :(得分:6)

不,他们不一样。这是关于object oriented programming

->表示正在访问对象成员。例如:

class Test {
  public $foo;
  public $blah;
}

$test = new Test;
$test->foo = 'testing';

[]是一个数组访问运算符,由true数组使用。如果对象实现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';

答案 3 :(得分:3)

让你的答案简短而甜蜜......

$row->unixtime

这是对象

$row[unixtime]

这是一个数组

答案 4 :(得分:1)

这可能是从the C language中提取的另一个习惯用法,这实际上就是PHP编写的内容。许多PHP的功能,语法和运算符,甚至PHP的许多本机函数都源于C语言。