1
以下二維數組存儲多個圖像的信息(1.Book包含圖像,2.包含圖像的書的作者,3.圖像的名稱,4.Image ID):檢索並顯示存儲在多維數組中的數據
$images = array(array('book_name'=>"BookA", 'author_name'=>"AuthorA",
'image_name'=>"ImageA", 'image_id'=>1),
array('book_name'=>"BookA",'author_name'=>"AuthorB",
'image_name'=>"ImageA", 'image_id'=>1),
array('book_name'=>"BookA",'author_name'=>"AuthorA",
'image_name'=>"ImageB", 'image_id'=>2),
array('book_name'=>"BookA", 'author_name'=>"AuthorB",
'image_name'=>"ImageB", 'image_id'=>2),
array('book_name'=>"BookB", 'author_name'=>"AuthorA",
'image_name'=>"ImageB", 'image_id'=>2));
一本書可以有多個作者。 作者可以與幾本書相關聯。 圖像可以包含在幾本書中。
我想創建一個HTML表具有以下的列:
- 書(S) - 現場列出了所有包含特定圖像的書籍
- 作者(S) - 現場列出了所有所有包含該特定圖像
- 圖片名稱的書籍的作者 - 字段包含
我目前使用下面的代碼,圖像的名稱:
<?php function transform($images) {
$result = array();
foreach($images as $key => $image) {
$image_id = $image['image_id'];
if (!isset($result[$image_id])) {
$result[$image_id] = array(
'author_name' => array(),
'book_name' => $image['book_name'],
'image_id' => $image['image_id'],
'image_name' => $image['image_name']
);
}
$result[$image_id]['author_name'] = array_merge($result[$image_id]['author_name'],
array(($image['author_name'])));
}
foreach($result as $key => $data) {
$uniqueauthors = array_unique($result[$key]['author_name']);
$result[$key]['author_name'] = implode('; ', $uniqueauthors);
}
return $result;
}
$images = transform($images);?>
我的HTML代碼來創建表:
<table>
<tr><th>Book(s)</th>
<th>Author(s)</th>
<th>Image Name</th>
</tr>
<?php foreach ($images as $image): ?>
<tr>
<td><?php htmlout($image['book_name']); ?></td>
<td><?php htmlout($image['author_name']); ?></td>
<td><?php htmlout($image['image_name']); ?></td>
</tr>
<?php endforeach; ?>
</table>
結果表:
Book(s) | Author(s) | Image Name
BookA AuthorA;AuthorB ImageA
BookA AuthorA;AuthorB ImageB
所需的表:
Book(s) | Author(s) | Image Name
BookA AuthorA;AuthorB ImageA
BookA;BookB AuthorA;AuthorB ImageB
問題: 釷是代碼正確輸出(2.)包含所述圖像的所有書籍的所有作者列表和(3.)圖像名稱。但是,它不會根據需要輸出(3.):它僅輸出包含有問題圖像的第一個book_name(BookA),而不是包含圖像的所有書籍(BookA; BookB)的列表。如何獲取一個包含3列的HTML表格(1.)列出包含所涉及圖像的所有書籍,(2)列出包含所涉及圖像的書籍的所有作者, (3.)包含有問題的圖像的名稱。 非常感謝!
是的,我忘記了foreach循環中的書籍。謝謝戴爾,你的解決方案的作品! – user1894374