0

配列から一意の値のみを返すという問題について、誰かが私を助けてくれることを願っています。

お気に入りの写真の 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 などは 1 回だけ表示したいと思います。

私は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]: The argument should be an array. どんな助けでも大歓迎です!

4

1 に答える 1

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()です。

于 2014-01-09T22:08:27.403 に答える