ooPHP - How do I create an array of objects from an associative array?

微笑、不失礼 提交于 2019-12-13 05:20:49

问题


I'm not sure if this is even possible after trying to figure it out for hours but here goes...

I have an class, UserPicture, which has properties for filename, filetype, created etc. (i.e. it doesn't store the actual picture as a blob, rather references it by using $filename.$filetype).

I want to be able to have a page that displays all of a user's pictures, so I need to retrieve all rows from the DB relevant to that user. I've got the associative array out of the DB successfully and have used the following code to create the object, which works as I have tested the output of it by echoing it...

$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);
}

This kinda works but I only get the last row as an object in the array. So I have tried array_push...

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

...and I've tried using $pictures[]=new UserPicture($row), but both just give me the following error...

Catchable fatal error: Object of class UserPicture could not be converted to string in user_picture_manage.php on line 72

If anyone could please shed any light on what I'm doing wrong that would be very helpful!

Many thanks, Steve


回答1:


You're overwriting the $pictures variable in your above code. You need to add a new key for each row. The following should do the trick:

$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);
}

Note where I've added squared braces ([]). For each iteration in the foreach loop, a new key will be added to the $pictures array containing the new UserPicture class as the value.

You should then be able to iterate over your new $pictures array as follows:

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


来源:https://stackoverflow.com/questions/3913712/oophp-how-do-i-create-an-array-of-objects-from-an-associative-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!