我正在试图列出包含单个照片的相册,类似于每个分类包含帖子的方式。
我有两个数据库表,分别是“相册”和“照片”。
相册表包含id、相册名称和相册描述这些列。
照片表包含id、照片所在相册、照片名称和照片描述这些列。
我使用INNER JOIN将相册和照片表结合起来,生成了下面的平面$albums数组:
我希望将上面的$albums数组转换为下面这样的分层数组:
我曾尝试过类似的方法,但效果并不如预期,我需要帮助:
我使用INNER JOIN将相册和照片表结合起来,生成了下面的平面$albums数组:
<?php
$albums = [
['album_id' => '1', 'photo_id' => '41', 'album_name' => 'album_1', 'album_description' => 'Album 1 description', 'photo_is_in' => 'album_1', 'photo_name' => 'photo_1.jpg', 'photo_description' => 'Photo 1 description'],
['album_id' => '1', 'photo_id' => '42', 'album_name' => 'album_1', 'album_description' => 'Album 1 description', 'photo_is_in' => 'album_1', 'photo_name' => 'photo_2.jpg', 'photo_description' => 'Photo 2 description'],
//==================
['album_id' => '2', 'photo_id' => '43', 'album_name' => 'album_2', 'album_description' => 'Album 2 description', 'photo_is_in' => 'album_2', 'photo_name' => 'photo_3.jpg', 'photo_description' => 'Photo 3 description'],
['album_id' => '2', 'photo_id' => '44', 'album_name' => 'album_2', 'album_description' => 'Album 2 description', 'photo_is_in' => 'album_2', 'photo_name' => 'photo_4.jpg', 'photo_description' => 'Photo 4 description'],
];
?>
我希望将上面的$albums数组转换为下面这样的分层数组:
<?php
$sameAlbums = Array(
'album_1' => Array( //comes from 'album_name' => 'album_1' in the $data array above
'album_id' => '1',
'album_description' => 'Album 1 description',
'album_1' => Array( //comes from 'photo_is_in' => 'album_1' in the $data array above
'photo_1.jpg' => Array(
'photo_id' => '41',
'photo_description' => 'Photo 1 description',
),
'photo_2.jpg' => Array(
'photo_id' => '42',
'photo_description' => 'Photo 2 description',
)
)
),
//============================================
'album_2' => Array( //comes from 'album_name' => 'album_2' in the $data array above
'album_id' => '2',
'album_description' => 'Album 2 description',
'album_2' => Array( //comes from 'phot_is_in' => 'album_2' in the $data array above
'photo_3.jpg' => Array(
'photo_id' => '43',
'photo_description' => 'Photo 3 deescription',
),
'photo_3.jpg' => Array(
'photo_id' => '44',
'photo_description' => 'Photo 4 deescription',
)
)
)
);
?>
我曾尝试过类似的方法,但效果并不如预期,我需要帮助:
<?php
$grouping = [];
foreach($albums as $albumName){
//Grouping data by album name
$grouping[$albumName['album_name']][] = $albumName;
}
echo "<pre>";
print_r($grouping);
?>
我感觉我的解决方案还不够,但是我又缺乏想法。
$grouping[$albumName['phot_is_in']] = $albumName[];
改为$grouping[$albumName['phot_is_in']][] = $albumName;
。 - Paul Spiegel