PHP ArrayObject / ArrayIterator:概念与示例

时间:2013-07-09 16:34:16

标签: php foreach arrayobject arrayiterator

我试图理解PHP中对象数组的概念。 到目前为止,我只是使用常规数组来遍历记录列表并在表格中显示它们。

我知道我可以使用Object做到这一点,但我不太清楚如何做到这一点。

我理解单个Object实例的概念,其中所有属性都表示从数据库填充的字段及其关联值,可以调用如下:

$objUser->first_name;

现在我想了解一下,根本找不到一个简单的答案就是如何处理让我们说的用户列表,我想在一个页面上显示。我已经看到有ArrayObject,ArrayIterator等,但是根本无法理解它们是如何工作的,所以如果有人可以尝试用一些如何完成上述内容的例子来解释它,那将非常感激。

我正在寻找的是一个包含元素列表的对象,我可以这样循环(如果可能的话):

foreach($objUsers as $objUser) {
    echo $objUser->first_name;
}

感谢。

2 个答案:

答案 0 :(得分:4)

有可能。让您的对象实现Iterator界面,然后您就可以本地foreach覆盖它。 (注意,您需要正确实现推进和回放数组的方法)

更多信息:

答案 1 :(得分:1)

如果我遇到问题,你问如何处理许多物体?

因此,如果您使用对象数组,例如,来自ORM。

$users_list = new Users();
$arr_users = $users_list->all();

在$ arr_users中,您将拥有一个包含来自数据库的许多用户对象的数组。 每个对象都有一些属性,例如 - id,name,gender和age。

foreach($arr_users as $single_user) {
    echo $single_user->id;
    echo $single_user->name;
    echo $single_user->gender;
    echo $single_user->age;
}

如果您只需要一位用户:

echo $arr_users[1]->name;

您也可以使用这样的对象数组。 首先,从$ arr_users创建新数组;

foreach($arr_users as $single_user){
$arr_user_by_id[$single_user->id] = $single_user;
}

现在你有了一个新的数组,其中key是用户id,value是对象用户。

因此,您可以通过他的ID获取用户信息。

echo $arr_users[$_GET['uid']]->name;

我希望我能帮助你理解一下。