ooPHP - 如何从关联数组创建对象数组?

时间:2010-10-12 10:35:10

标签: php oop associative-array array-push

我不确定这是否可能在试图弄清楚数小时之后,但是这里...... [/ p>

我有一个类UserPicture,它具有filename,filetype,created等属性(即它不会将实际图片存储为blob,而是使用$ filename。$ filetype引用它。)

我希望能够有一个显示所有用户图片的页面,因此我需要从与该用户相关的数据库中检索所有行。我成功地从DB中获取了关联数组,并使用以下代码创建了对象,这是因为我通过回显测试了它的输出......

$result=query("SELECT * FROM pictures WHERE user_id=$user_id");
// Returns associative array with numerous succesfully.
$pictures = array();
foreach($result as $row) {
    $pictures = new UserPicture($row);
}

这种方法有效,但我只将最后一行作为数组中的对象。所以我尝试过array_push ......

foreach($result as $row) {
   array_push($pictures, new UserPicture($row));
}

...我尝试使用$ pictures [] =新的UserPicture($ row),但两者都只是给我以下错误...

  

捕获致命错误:第72行的user_picture_manage.php中无法将类UserPicture的对象转换为字符串

如果有人能够解释我做错了什么会非常有用!

非常感谢, 史蒂夫

1 个答案:

答案 0 :(得分:4)

您正在覆盖上述代码中的$pictures变量。您需要为每一行添加一个新密钥。以下应该可以解决问题:

$result=query("SELECT * FROM pictures WHERE user_id=$user_id");
// Returns associative array with numerous succesfully.
$pictures = array();
foreach($result as $row) {
    $pictures[] = new UserPicture($row);
}

注意我添加了方括号([])。对于foreach循环中的每次迭代,新密钥将添加到包含新$pictures类的UserPicture数组中作为值。

然后,您应该能够按如下方式迭代新的$pictures数组:

foreach ($pictures as $picture) {
    $src = $picture->filename . "." . $picture->filetype;
    echo '<img src="<?php echo $src; ?>" alt="" />';
}