2015-08-28 4 views
-3

Я пытаюсь найти дубликаты classid в json-массиве и для каждого найденного дубликата, эхо-идентификатор dulicate ... Это всего лишь пример json-файла.поиск дубликата classid в json-массиве

Я пробовал несколько вещей, но не смог - если бы я разместил свой код, это не сработало бы с этим примером кода. Это намного сложнее, поскольку после проверки другого файла json для сопоставления идентификаторов ... и множества других вещей.

Заранее спасибо.

{ 
"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, 
     } 

} 

}

+4

Пожалуйста, покажите нам, что вы пробовали. – Ahmad

+1

Пожалуйста, покажите, что вы пробовали, что не удалось. – Sean

+1

Где ваш код? –

ответ

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

без 'true',' $ array' будет анализироваться как 'stdClass()' –

+0

вы не можете эхо-массива '$ classid' – CodeGodie

+1

Кроме того, вам нужно нажать OP, чтобы попытаться показать код перед предоставлением ответа или иначе они в основном используют вас для выполнения своей работы. – CodeGodie

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