在json数组中搜索重复的classid

时间:2015-08-28 20:06:41

标签: php json

我试图在json数组中搜索重复的classid,并且对于找到的每个重复,回显dulicate id ...这只是json文件的一个示例。

我尝试了一些但是失败了 - 如果我发布了我的代码,它将无法使用此示例代码。在检查另一个json文件以找到匹配的ID以及其他一些东西后,它会变得更加复杂。

提前致谢。

{
"response": {
    "received": [
        {
            "items": [
                {

                    "classid": "356464564",

                },
                {
                    "classid": "456456456",

                },
                {
                    "classid": "356464564",

                },
                {
                    "classid": "721248158",

                }
            ]
            ,
            "time_created": 1440782791,
        },
        {
        "items": [
                {

                    "classid": "845362344",

                },
                {
                    "classid": "2543634754",

                },
                {
                    "classid": "2543634754",

                },
                {
                    "classid": "5967856788",

                }
            ]
            ,
            "time_created": 1440456791,
        }

}

}

2 个答案:

答案 0 :(得分:0)

这可以做你正在寻找的事情:

<?php

  $array = json_decode('{
      "response": {
          "received": [
              {
                  "items": [
                      {
                          "classid": "356464564"
                      },
                      {
                          "classid": "456456456"
                      },
                      {
                          "classid": "356464564"
                      },
                      {
                          "classid": "721248158"
                      }
                  ]
                  ,
                  "time_created": 1440782791
              }
          ]
      }
  }', true);

  $cleanArray = array();

  foreach($array['response']['received'][0]['items'] as $classid)
  {
    if(in_array($classid['classid'], $cleanArray))
      echo "Duplicate found: ".$classid['classid'].'<br>';
    else
      $cleanArray[] = $classid['classid'];  
  }

?>

答案 1 :(得分:0)

尝试这一点,它会在找到匹配项时使数组变小,从而使算法更有效。

$arr = json_decode($json , true);
$items_array = array_column($arr['response']['items'], 'classid');

foreach ($items_array as $k => $val) {
    foreach ($items_array as $k2 => $val2) {
        if ($k2 != $k) {
            if ($val == $val2) {
                unset($items_array[$k]);
                if (isset($final[$val])) {
                    $final[$val]++;
                } else {
                    $final[$val] = 1;
                }
            }
        }
    }
}

var_dump($final); //will show you your duplicates