Я бы не беспокоился о том, кажется ли это эффективным , а о том, является ли он чистым и обслуживаемым.
Поэтому я бы предложил разделить код на две функции.один, который находит все фотографии, связанные с альбомом, и один, который создает HTML для его отображения, например что-то вроде:
/**
* Gets the photos for a given album
* @param int $albumId the album identifier
* @return array an array of photos associated with this album,
* or an empty array if there are none
*/
function getPhotos($albumId);
/**
* Outputs an html div for each photo in the photo array
* @param array $photos an array of photos
*/
function displayPhotos($photos);
Вы также можете использовать некоторые из итераторов SPL, чтобы сделать код чище, напримеркак LimitIterator
, который можно использовать для ограничения массива, передаваемого displayPhotos для данного альбома.