0

何時間も考えてみた後、これが可能かどうかはわかりませんが、ここに行きます...

ファイル名、ファイルタイプ、作成などのプロパティを持つクラスUserPictureがあります(つまり、実際の画像をブロブとして保存せず、$filename.$filetypeを使用して参照します)。

ユーザーの写真をすべて表示するページを作成できるようにしたいので、そのユーザーに関連する DB からすべての行を取得する必要があります。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[]=new UserPicture($row) を使用してみましたが、どちらも次のエラーが表示されます...

キャッチ可能な致命的なエラー: クラス UserPicture のオブジェクトは、72 行目の user_picture_manage.php で文字列に変換できませんでした

誰かが私が間違っていることに光を当てることができれば、それは非常に役に立ちます!

どうもありがとう、スティーブ

4

1 に答える 1

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に新しいキーが追加されます。$picturesUserPicture

$picturesその後、次のように新しい配列を反復処理できるはずです。

foreach ($pictures as $picture) {
    $src = $picture->filename . "." . $picture->filetype;
    echo '<img src="<?php echo $src; ?>" alt="" />';
}
于 2010-10-12T11:03:27.033 に答える