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

mrp*_*atg 2 php oop

我已经看过这个用了很多,尤其是SimpleXML.

这是:

$row->unixtime
Run Code Online (Sandbox Code Playgroud)

就像这样做???

$row[unixtime]
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*e B 24

面向对象的PHP编程

$row->unixtime
Run Code Online (Sandbox Code Playgroud)

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

$row[unixtime] // I hope you meant $row['unixtime'];
Run Code Online (Sandbox Code Playgroud)

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

问"对象是什么"有点模糊.

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


mau*_*ris 10

这完全不同.

第一个,$row->unixtime意味着您正在访问$unixtime类的对象/实例的公共变量$row.这是面向对象的编程.

例:

class example{
  public $unixtime = 1234567890;
}

$row = new example();
echo $row->unixtime; // echos 1234567890
Run Code Online (Sandbox Code Playgroud)

第二个是获取'unixtime'数组的密钥$row.这称为关联数组.例:

$row = array(
          'unixtime' => 1234567890
       );
echo $row['unixtime']; // echos 1234567890
Run Code Online (Sandbox Code Playgroud)

您可以使用(array)(object)强制转换轻松地在对象和数组之间进行转换.例:

$row = array(
          'unixtime' => 1234567890
       );
$row = (object)$row;
echo $row->unixtime; // echos 1234567890
Run Code Online (Sandbox Code Playgroud)

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


cle*_*tus 6

不,他们不一样.它是关于面向对象的编程.

->表示访问对象成员.例如:

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

$test = new Test;
$test->foo = 'testing';
Run Code Online (Sandbox Code Playgroud)

[]是一个数组访问运算符,由真正的数组使用.如果对象实现了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';
Run Code Online (Sandbox Code Playgroud)