【发布时间】:2015-07-28 22:05:11
【问题描述】:
我总是以Arrays 而不是Objects 获取数据库结果,原因是PHP 提供了如此多的函数来操作arrays,这让我的生活变得轻松。
我检查了这个 SO 问题 Objects or Arrays?
但它没有回答我的问题。以前在我的项目中工作的人总是以Objects 获取结果,这让我很难将其转换为arrays,然后再操纵它们,因为我正在生成潜在客户统计信息。 数组函数让它变得简单。
有没有简单的方法可以做到这一点?或任何其他选择?为什么选择Objects 而不是Arrays?
注意:我不考虑performance,而是考虑我的ease of manipulation。
【问题讨论】:
-
也许尝试将结果中的对象转换为
ArrayObjects,然后使用:getArrayCopy()将其转换为数组(也许您甚至不必将其转换为数组,如果 arrayObject 具有您想要的功能:php.net/manual/en/class.arrayobject.php)。或者您也可以尝试简单地投射它们,例如$array = (array) $myObject; -
我不知道 ArrayObjects。是的,当我使用强制转换时,它对多维对象起作用,只是第一级中的元素变成了数组而不是元素的数据,它仍然是对象,然后我不得不使用 foreach 循环将它们转换为数组
-
我现在将尝试 ArrayObjects...感谢您的建议,但我仍然不明白为什么人们选择 Objects!
-
imo。如果从查询返回的数据表示自定义对象的“状态向量”,那么使用对象会很有用,因为您可以访问所有“方法”来操作数据。另一个优点是“属性访问”,它可以在代码中更好地阅读。
ArrayObject类非常有用,因为它允许“属性访问”和“索引访问”。 -
选择对象而不是数组的一个原因是,您的代码可以说“此结果行由
Visit对象表示,该对象具有$id、$ip_address、$visit_time、等等...”,然后您不必阅读查询(可能是十个文件之外,动态生成或一百行长)来知道您应该使用哪些字段。你可以使用static analysis tools 到validate your code while you write it。