【发布时间】:2011-10-06 08:39:00
【问题描述】:
我在 WordPress 中做了很多工作,我注意到返回对象的函数远多于数组。除非您特别要求数组,否则数据库结果将作为对象返回。错误作为对象返回。在 WordPress 之外,大多数 API 都会为您提供对象而不是数组。
我的问题是,为什么他们使用对象而不是数组?在大多数情况下,这并不重要,但在某些情况下,我发现对象不仅更难处理,而且更难缠住我的脑袋。使用对象是否有性能原因?
我是一名自学成才的 PHP 程序员。我有文科学位。如果我遗漏了计算机科学的一个基本方面,请原谅我。 ;)
【问题讨论】:
-
我很好奇对象的缺点,比如不能对它们使用
count()或array_*()函数(至少在关于存储/返回键 => 值数据)。似乎没有人提到它,还是我错过了什么? -
通过实现 Countable 或 Iterator 接口可以使对象可数和可迭代。也请查看php.net/manual/en/book.spl.php。
-
如果安装了 SPL 并且您为您的对象类实现了可计数的接口,那么您可以在对象上调用
count()。 -
在许多情况下,数组甚至没有意义,因为您不返回对象集合,或者一种不容易用数组模拟的集合。如果您只有一系列其他值且没有关联额外的语义,那么看在上帝的份上返回一个数组 - 但您会发现这种情况很少发生。
-
@delnan 和其他人:请注意@Dennis 谈论的是associative arrays,(又名字典,又名地图),而不是普通的(整数索引)数组。这些是 PHP 的核心特性,其用途与动态类 (
stdClass) 大致相同。我不确定这个问题除了“因为主要从事 OOP 工作的程序员更喜欢使用对象的语义”之外还有其他答案
标签: php