0

1つのJSONリンクの値を使用して、他のJSONリンクに値を入力しようとしています。その結果、結合されたJSONからの値の一意のリストが生成されます。値の完全なリストを作成することはできましたが、最後のループで一意の値のみを表示する構文を見つけるのに苦労しています。どんな助けでもいただければ幸いです。

$collection_string = file_get_contents("http://some_json_url.com/json");
$collection_list = json_decode($collection_string, true);

foreach ($collection_list as $col_lists => $col_list) {
     $object_string = file_get_contents('http://another_json_url.com/'.$col_list['key'].'/json');
     $object_list = json_decode($object_string, true);
     $object_array = array();

     foreach ($object_list as $objects => $object) {
          $object_array [] = array_unique($object); //Returns "Warning: array_unique() expects parameter 1 to be array, string given in..."
          echo '<li><a href="some_search_url/'.$object_array.'/search/">'.$object_array.'</a></li>'; //Returns "Array"
          echo '<li><a href="some_search_url/'.$object.'/search/">'.$object.'</a></li>'; //Returns complete list
     }

}

作業コード:

$collection_string = file_get_contents("http://some_json_url.com/json");
$collection_list = json_decode($collection_string, true);

$object_array = array();

foreach ($collection_list as $col_lists => $col_list) {
     $object_string = file_get_contents('http://another_json_url.com/'.$col_list['key'].'/json');
     $object_list = json_decode($object_string, true);

     foreach ($object_list as $key => $value) {
          array_push($object_array, $value);
     }
}

$object_unique = array_unique($object_array);
natcasesort($object_unique);

foreach ($object_unique as $key => $value) {
     echo '<li><a href="some_search_url/'.$value.'/search/">'.$value.'</a></li>';
}
4

1 に答える 1

1

これを変更するだけです

$object_array [] = array_unique($object);

それに

$object_array [] = $object; // edited !
array_unique($object_array);

たぶん、1行のコードでこれを行うこともできますが、私はそれを書く方法がわかりません。しかし、私が書いた方法は少し最適化されていないので、最後のループの直後に、array_unique()を1回だけ実行する方がよいでしょう。

ところで、あなたの問題は、配列ではない$objectを一意にしようとしたことです。それは文字列/オブジェクトです。

于 2012-06-18T16:15:35.373 に答える