php(propel)中的集合和数组有啥区别?

Posted

技术标签:

【中文标题】php(propel)中的集合和数组有啥区别?【英文标题】:what is the difference between collection and array in php (propel)?php(propel)中的集合和数组有什么区别? 【发布时间】:2016-06-28 10:37:25 【问题描述】:

收集和按需补水 使用集合而不是数组的优点是 Propel 可以按需对模型对象进行水合。使用此功能,您在检索大量结果时永远不会出现内存不足的情况。通过 Model Queries 的 setFormatter() 方法,按需补水非常容易触发:

<?php
 $authors = AuthorQuery::create()
   ->limit(50000)
   ->setFormatter(ModelCriteria::FORMAT_ON_DEMAND)
   ->find();

foreach ($authors as $author) 
  echo $author->getFirstName();

1) 这里的“Hydration”是什么意思? 2) 集合和数组有什么区别?

来源:Propel @1.6

【问题讨论】:

【参考方案1】:

1.Hidration

一种通过在需要时用行数据“填充”类/对象来提高性能的方法。

Propel 不会从一个非常大的表中执行"SELECT * FROM SomeTable",而是首先触发"SELECT ID FROM SomeTable",然后在循环内执行"SELECT [COLUMS] FROM SomeTable WHERE ID=[CurrentID]",因此是“按需”

2。集合与数组 Array 只是普通的数组,而 PropelCollection 是 Object 的 Object,它有很多可用的东西,例如:

分页结果 检查奇数或偶数、-&gt;isOdd() 等。 检查其中的项目数$object-&gt;count() 格式转换-&gt;toYAML(),-&gt;toCSV(),-&gt;toXML()

集合中的每个项目都是一个 PropelObject,因此您仍然可以在循环中使用 -&gt;getColumn() 获取数据。 Documentation

【讨论】:

以上是关于php(propel)中的集合和数组有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Python中的集合和列表有啥区别?

请问JAVA中啥是集合,和数组比有啥区别呢?谢谢

数组声明和集合声明有啥区别[重复]

多维数组和 C# 中的数组数组有啥区别?

链表是啥!那个编程语言中有的,和数组有啥区别

python中元组和列表有啥区别