PHP只打印出数组中的唯一值

时间:2014-01-09 22:00:43

标签: php arrays foreach array-unique

我希望有人可以帮我解决一个问题,我只返回数组中的唯一值。

我正在从500px API中提取我喜欢的照片数据。从这个数组我想拉出照片的类别ID。以下是在一定程度上完成工作,但我想只显示唯一值(最终我想从与ID关联的标签构建导航)。

if($json){
        $obj = json_decode($json); 
                }
      else {
        print "<p>Currently, No Service Available.</p>";
            } 


            foreach ($obj->photos as $photo){


        print $photo->category;

           } 

这只返回一个字符串99241210812231382611121281221121812。这些是我喜欢的照片的正确类别ID但是我想只显示9,1,2等一次。

我花了一些时间在PHP手册上,并在这里尝试了下面的

if($json){
        $obj = json_decode($json); 
                }
      else {
        print "<p>Currently, No Service Available.</p>";
            } 


            foreach ($obj->photos as $photo){
              $test=$photo->category;
             $unique=str_split($test);
print array_unique($unique);

           }

但这只会返回一个刺痛ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray

如果我尝试:

foreach ($obj->photos as $photo){

print array_unique($photo->category);

           }

我得到警告:array_unique()[function.array-unique]:参数应该是一个数组。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

设置数组以存储类别。用类别ID填充它。使其仅保留唯一值。回应它。

$categories=array();
foreach ($obj->photos as $photo){
    $categories[]=$photo->category;
}
$categories=array_unique($categories);

print implode(', ', $categories); // will show a string 9, 1, 2

print_r($categories); // will show the values as an array 
                      // you may want to view page source to read them easily

http://uk3.php.net/function.implode
http://uk1.php.net/print_r

另一种方法是设置数组键$categories[$photo->category]=true;,然后使用array_keys()