3

在什么情况下更适合使用:

$Obj_Array = new ArrayObject(array(), ArrayObject::STD_PROP_LIST);
 $Obj_Array->Key = "Value";

相当:

 $Array = array(); 
 $Array['Key'] = "Value"; 

现在,这两者是不同的。我可以说这么远,即使在进行研究之后知道我认为没有真正的理由偏爱对象数组而不是传统数组。

那么有人可以给我展示一个关于对象数组如何比普通数组提供更多好处的活动示例吗


此外,我知道这些对象数组对于 PHP 来说是相当新的。但几乎所有的数据库函数,例如,返回一个数组或单个变量:

$Query = $DB->prepare("SELECT * FROM TBL WHERE col=?");
$Query->bind_param('s',$Variable); 
$Query->execute();
$Query->bind_result($Col1, $Col2, $Col3);
$Query->fetch();
$Query->close(); 

上面的示例将内容作为单个变量返回。

因此,要使用 while 循环创建对象数组:

$Obj_Array = new ArrayObject(array(), ArrayObject::STD_PROP_LIST);
$Key_Creation = 0;   

$Query = $DB->prepare("SELECT Username,Password FROM TBL WHERE col=?");
$Query->bind_param('s',$Variable); 
$Query->execute();
$Query->bind_result($Col1, $Col2);
while($Query->fetch()){
  $Obj_Array->$Key_Creation = array($Col1,$Col2);
  $Key_Creation++;
}
$Query->close();
4

2 回答 2

2

ArrayObject当您必须使操作对象的代码和操作数组的代码一起工作时很有用,假设不可能或不希望将代码的一部分更改为与另一部分相同的行为。

在实践中,如果您控制了代码的一个或两个部分,则您不需要任何代码,ArrayObject并且使用它只会降低性能。

我个人的观点是,ArrayObject应该像瘟疫一样避免它,这只是 PHP 中可疑有用的半生不熟的“功能”列表中的另一个。

于 2013-05-18T23:05:13.533 回答
1

这是一个偏好风格的问题。PHP 5 中引入的新 ArrayObjects 是面向对象的数组版本。许多程序员更喜欢更多 OO 风格的编程,而旧的数组不适合 OO 世界。

ArrayObjects 可能会有一点性能损失,但在 php 5.3 中这几乎消失了。

于 2013-05-18T23:08:33.660 回答