从json数据中提取唯一键名,例如SQL select与**********不同

时间:2011-03-09 01:32:56

标签: php arrays json

我有以下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......
}

所以我想muy问题是我想取$likesArray并取出所有唯一的Data->Category->names。也会想做排序和其他事情,但是到时候我会谈到它。

提前感谢您的帮助。 尼尔

1 个答案:

答案 0 :(得分:1)

您想要使用的数据结构是一个只允许唯一条目的集合。

使用PHP数组的简单实现是使用密钥。

e.g。

$categories = array();

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

$categories = array_keys($categories);

这样,如果已经添加了类别,那么您不会向数组中添加任何新内容。

如果密钥对您不重要,那么您可以使用以下行:

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

但这意味着你的数组不会有0,1,2 ... n的密钥。