7

我试图理解 PHP 中对象数组的概念。迄今为止,我只是使用常规数组来循环记录列表并将它们显示在说表中。

我知道我可以使用 Object 来做到这一点,但我不太确定该怎么做。

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

$objUser->first_name;

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

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

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

谢谢。

4

2 回答 2

5

有可能的。让您的对象实现Iterator接口,然后您就可以foreach在本机上覆盖它。(注意,您需要正确实现前进和倒退数组的方法)

更多信息:

于 2013-07-09T17:41:24.520 回答
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;
}

现在您有了新数组,其中键是用户 ID,值是对象用户。

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

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

我希望我能帮助一点点理解。

于 2013-07-09T17:06:24.273 回答