2015-02-10 110 views
0

嗨我想通过使用WordPress的标签列表循环。标签列表是通过另一个插件生成的。删除使用array_unique重复

目前这是我的代码有

<?php foreach($entities as $entity): ?> 
    <?php $str = str_replace(' ', '-', esc_attr($entity->galdesc)) ?> 
    <li><a href="#" id="<?php echo $str ?>"><?php echo_safe_html(nl2br($entity->galdesc)); ?></a></li> 
    <?php endforeach ?> 

这个输出的标签列表如下

tag1 
    tag1 
    tag2 
    tag1 
    tag3 

这正好与所有的标签,但我试图删除重复,我研究过使用array_unique,但不能让这个工作。

谢谢

+0

您是否尝试使用$ entity-> gald格式化新数组esc然后调用array_unique呢? – 2015-02-10 12:24:48

+0

我不确定我会怎么做呢?我尝试了各种各样的东西,但我只知道我没有做正确的事情... – 2015-02-10 12:27:23

+0

http://ideone.com/3Quu4I – 2015-02-10 12:37:51

回答

0

您需要缓存已使用的$ entity-> galdesc的值。 与in_array做法可能是这样的:

<?php $tagnamesUsed = array(); ?> 
<?php foreach($entities as $entity): ?> 
<?php $str = str_replace(' ', '-', esc_attr($entity->galdesc)) ?> 
<?php if (!in_array($entity->galdesc, $tagnamesUsed)): ?> 
<li><a href="#" id="<?php echo $str ?>"><?php echo_safe_html(nl2br($entity->galdesc)); ?></a></li> 
<?php $tagnamesUsed[] = $entity->galdesc; ?> 
<?php endif; ?> 
<?php endforeach ?> 
0

你的数组包含对象。 array_unique()尝试将您的数组值作为字符串进行比较。在这里看到的最多的回答更多的细节:要解决这个array_unique for objects?

一种方法是创建的,其上已经输出变量数组,然后对证每次:

<?php $arrTags = array(); ?> 
<?php foreach($entities as $entity): ?> 
    <?php $str = str_replace(' ', '-', esc_attr($entity->galdesc)) ?> 

    <?php if(in_array($str,$arrTags)){ continue; } else { $arrTags[] = $str; } ?> 

    <li><a href="#" id="<?php echo $str ?>"><?php echo_safe_html(nl2br($entity->galdesc)); ?></a></li> 
<?php endforeach; ?> 
0

尝试迭代实体数组两次,它不是幻想,但可能会工作。

  1. 解析标签标题,并把它添加到一个临时数组
  2. 应用array_unique临时阵列
  3. 迭代临时数组中打印结果

它的代码会是这样的:

<?php 

$tmp = array(); 
foreach($entities as $entity) { 
    $tmp[] = str_replace(' ', '-', esc_attr($entity->galdesc)); 
} 

$uniques = array_unique($tmp); 
foreach ($uniques as $entity) { 
    echo $entity . '<br>'; 
}