OK、ここに私のジレンマがあります:
PHPFlickr を使用して Flickr の一連の画像を表示できるようにしたいと考えている人がどれだけいるかについては、あちこちで読んできましたが、PhotoSets の API が個々の写真の説明を表示しないことを嘆いています。スクリプトがページ上のギャラリーを組み立てる際に、各写真の説明を取得するように PHP をセットアップしようとした人もいます。ただし、この方法は、時間がかかり、非効率的である可能性があることを示しています。
写真 ID と説明を使用してカンマ区切りの値の文字列を作成するというアイデアを別の場所で思いつきました。私はそれを MySQL データベースに保存し、スクリプトでページ上のギャラリーを組み立てる際にそれを呼び出します。爆発を使用して写真 ID とその説明の配列を作成し、それを呼び出してギャップを埋めます...したがって、API 呼び出しが少なくなり、ページが高速になります。
そのため、バックエンドの管理者には、ギャラリーの情報を設定するフォームがあり、セット ID を渡します。スクリプトはその後、この区切り値の文字列を作成します (区切りとして "|~|")。これが私が思いついたものです:
include("phpFlickr.php");
$f = new phpFlickr("< api >");
$descArray = "";
// This will create an Array of Photo ID from the Set ID.
// $setFeed is the set ID brought in from the form.
$photos = $f->photosets_getPhotos($setFeed);
foreach ($photos['photoset']['photo'] as $photo) {
$returnDesc = array();
$photoID = $photo['id'];
$rsp = $f->photos_getInfo($photoID);
foreach ($rsp as $pic) {
$returnDesc[] = htmlspecialchars($pic['description'], ENT_QUOTES);
}
$descArray .= $photoID."|~|".$returnDesc[0]."|~|";
}
次に、文字列 $descArray が MySQL 文字列に配置され、フォームから取り込まれた他の情報とともにデータベースに配置されます。
私の最初の質問は、これらの説明を取得するために 2 番目の foreach ループを使用することは正しいですか? それを使用していないネット上の他の例をたどってみましたが、うまくいきませんでした。2番目のforeachを実行すると、うまくいきました。私は何か他のことをすべきでしたか?
返されるデータが 2 つのエントリになることに気付きました。1 つは説明であり、もう 1 つは単なる「o」です。したがって、配列 $returnDesc を使用して、必要な 1 つの文字列だけを取得し、もう 1 つの文字列を取得できませんでした。
2 番目の質問は、これを複雑にしすぎたかどうかです。私はよりクリーンで無駄のないコードを書くことを学ぶのが好きで、意見を探していました。
改善に関する提案は大歓迎です。前もって感謝します。