我有一个关于为我的帖子设置适当类别的问题,这些类别会自动完成。我正在使用PHP。
以下是我在数据库中的示例文档:
{
"_id" : "css-clearfix-explained",
"title" : "CSS Clearfix Explained",
"category" : [
"CSS/HTML",
" Wordpress"
],
"date_time" : ISODate("2014-08-13T21:03:45.367Z"),
"description" : "Blalalal ",
"content" : " ",
"author" : "Maciej Sitko"
}
因此,为了那次尝试,我编写了在视图页面中插入类别的代码,更具体地说,它将它们插入到表中。这是代码:
<?php if(!isset($_GET['cat'])) {
$categories = $collection->find();?>
<table class="table table-hover table-striped">
<thead class='table-head' >
<tr ><th colspan='2'>Categories</th></tr>
</thead>
<tbody>
<?php foreach($categories as $category) {
foreach($category as $keys) {
if((is_array($keys)) && (!empty($keys))) {
foreach($keys as $key => $value) { ?>
<tr>
<td><a class="normalize" href="">
<?php echo $keys[$key]; ?></a></td>
<td class="small"> Posts</td>
</tr>
<?php } } } } ?>
</tbody>
</table>
问题是,你看到它(我敢打赌),当它以这种方式执行时,会显示所有表中类别的重复。如何防止这些类别在列表中重复出现?我知道这是一个菜鸟问题,但我还在学习。
答案 0 :(得分:1)
您可以将$ category写入数组,每次迭代 - 在显示数据之前 - 您可以检查$ category是否已存在。您可以使用&#34; in_array&#34;:http://php.net/manual/de/function.in-array.php
<?php if(!isset($_GET['cat'])) {
$categories = $collection->find();?>
<table class="table table-hover table-striped">
<thead class='table-head' >
<tr ><th colspan='2'>Categories</th></tr>
</thead>
<tbody>
<?php
$uniqueCats = array();
foreach($categories as $category) {
foreach($category as $keys) {
if((is_array($keys)) && (!empty($keys))) {
foreach($keys as $key => $value) {
if( in_array($value, $uniqueCats) ) { continue; }
$uniqueCats[] = $value;
?>
<tr>
<td><a class="normalize" href="">
<?php echo $value; ?></a></td>
<td class="small"> Posts</td>
</tr>
<?php } } } } ?>
</tbody>
</table>
我希望你能找到的是:) 代码/变量与我在示例中读取数据的方式略有不同,因此我可能误解了您的问题:)