对象集合
问题描述:
我正在创建一个需要向我提供MySQL-表“内容”中的所有数据的类。对象集合
我想将我的数据作为对象返回。 到目前为止,我设法得到一个对象返回,但我想要返回一个对象集合与数据库中的所有行。
<?
class ContentItem {
public $id;
public $title;
public $subtitle;
public $conent;
public $intro_length;
public $active;
public $start_date;
public $end_date;
public $views;
static function getContentItems() {
$query = "SELECT * FROM content";
$result = mysql_query($query)or die(mysql_error());
$item = new ContentItem();
while ($data = mysql_fetch_object($result)) {
$item = $data;
}
return $item;
}
}
答
你的循环不断改写data
与item
,并new ContentItem()
立即覆盖。如果“对象集合”你的意思是“阵列”,这是相当简单:
$items = array();
while ($data = mysql_fetch_object($result)) {
$items[] = $data;
}
return $items;
如果你想要回自己的自定义对象集合,然后定义集合类,并添加$数据的集合中的每个时间(大概也存储在一个数组中)。
答
简单的解决方案将是一个数组。我还假设你想从每组$数据
$items = array();
while ($data = mysql_fetch_object($result)) {
$items[] = new ContentItem($data);
}
return $items;
制成如果以后要与项目工作ContentItem,你可以使用foreach
foreach ($items as $item) {
// do something with $item
}
答
对于集合,你需要创建一个对象它实现了Iterator interface。你可以用数组,对象或任何你想要的来填充它。 Iterator
确保您可以在foreach
之后的循环中使用此集合。
此外,代码中存在错误。一次又一次地覆盖$item
。你应该创建一个数组(或者实现了Iterator
的对象,正如我所提到的那样),它将在每个循环中填充(如tandu已经写过)。