在foreach php中只获取一次重复的数组值

时间:2013-09-19 13:11:32

标签: php arrays

我的数组有12个新闻项目,包括标题,说明和类别名称

我只有4个类别(每个3个项目)并且需要创建类别菜单但是如果我从items数组中获取它们,那么我有12个类别名称(每个3个)。如果类别名称已经打印过,我该如何才能回显它?

$ myarray print:

   [0] => Array
        (
            [title] => Item 1
            [desc] => Sed venenatis bibendum nisl, eget iaculi
            [cat_title] => Category 1
        )

    [1] => Array
        (
            [title] => Item 1
            [desc] => Sed venenatis bibendum nisl, eget iaculi
            [cat_title] => Category 2
        )
    [2] => Array
        (
            [title] => Item 2
            [desc] => Sed venenatis bibendum nisl, eget iaculi
            [cat_title] => Category 2
        )...

循环:

   foreach( $myarray as $key=>$item){

       echo $item['category_name'];
    }

注意:我无法知道有多少类别,可能是一个或多个。目前有4个。 任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:6)

将数组类别映射到一个简单数组,然后删除所有重复值。

$categories = array_unique(array_map(function($val) {
    return $val['cat_title'];
}, $myarray));

foreach($categories as $cat) {
    echo $cat;
}

答案 1 :(得分:1)

您可以创建临时数组:

$temp = array();
foreach( $myarray as $key=>$item){
 if(!in_array($item['category_name'], $temp)){
       echo $item['category_name'];
       $temp[] = $item['category_name'];
 }
}