Получать уникальные имена ключей из данных json, например, SQL select отличается от ********** - PullRequest
1 голос
/ 09 марта 2011

У меня есть следующие данные json:

{
   "data": [
      {
         "name": "The Frugalicious Chef",
         "category": "Chef",
         "id": "186397894735983",
         "created_time": "2011-03-07T16:10:35+0000"
      },
      {
         "name": "Siuslaw Broadband",
         "category": "Telecommunication",
         "id": "190373850988171",
         "created_time": "2011-03-06T20:21:42+0000"
      },
      {
         "name": "Paul",
         "category": "Movie",
         "id": "129989595478",
         "created_time": "2011-03-04T19:55:18+0000"
      },
      {
         "name": "Mark Zuckerberg",
         "category": "Public figure",
         "id": "68310606562",
         "created_time": "2011-02-16T09:50:35+0000"
      },

Идея в том, что я хочу взять эти данные и использовать их части.Я хочу создать список "категорий", которые находятся в данных.Проблема в том, что есть и будет несколько предметов с одинаковой категорией.Так что в моем списке будут дубликаты, которые мне не нужны.Ниже показано, как я получаю данные и конвертирую их для использования:

$jsonurl = "https://xxxxxxxxxx.com/".$fd_ID. "/info?access_token=".$session['access_token'];
$likesjson = file_get_contents($jsonurl,0,null,null);
$likesArray=json_decode($likesjson);

Затем я использую foreach для доступа к данным.

foreach($friendLikesArray->data as $l)
{
etc......
}

Так что, наверное, яхочу взять $likesArray и вытащить все уникальные Data->Category->names.Также захочется сделать сортировку и другие вещи, но я доберусь до этого, когда придет время.

Спасибо за помощь заранее.Neil

1 Ответ

1 голос
/ 09 марта 2011

Структура данных, которую вы хотите использовать, представляет собой набор, который допускает только уникальные записи.

Простая реализация с использованием массивов PHP - это использование ключей.

например,

$categories = array();

foreach($friendLikesArray->data as $l)
{
    $categories[$l->category] = true;
}

$categories = array_keys($categories);

Таким образом, если категория уже добавлена, вы не добавляете ничего нового в массив.

Если ключи не важны для вас, вы можете использовать строку:

$categories[$l->category] = $l->category

Но это означает, что ваш массив не будет иметь 0,1,2 ... n для ключей.

...