Попытка удалить дубликаты из массива JSON с помощью array_unique и array_values - PullRequest
0 голосов
/ 30 мая 2018

Я следил за этим, но он все еще не работает для меня: Как удалить дубликаты данных объекта JSON с помощью PHP

В моем файле PHP у меня есть 3 JSON arrays:

{"results":[{"cat_id":2,"cat_name":"veterinarian"},{"cat_id":3,"cat_name":"electrician"},
{"cat_id":4,"cat_name":"dentist"}]}

Array2:

 {"results":[{"cat_id":"8","cat_name":"dental hygienist"},{"cat_id":"5","cat_name":"stocktaker"},
{"cat_id":"9","cat_name":"builder"}]}

Array3:

{"results":[{"cat_id":4,"cat_name":"dentist"},{"cat_id":5,"cat_name":"stocktaker"},
{"cat_id":3,"cat_name":"electrician"}]}

Я хочу объединить их и удалить дубликаты.Я пытаюсь так:

//this works good, all merged into one
$array1AndArray2AndArray3 = array_merge_recursive($array1,$array2, $array3);

//now I want to remove duplicates:
$uniqueArray = array_values(array_unique($array1AndArray2AndArray3, SORT_REGULAR));

echo "Unique array is " . json_encode($uniqueArray);

Но я получаю:

Unique array is [[{"cat_id":2,"cat_name":"veterinarian"},{"cat_id":3,"cat_name":"electrician"},
{"cat_id":4,"cat_name":"dentist"},
{"cat_id":"8","cat_name":"dental hygienist"},{"cat_id":"5","cat_name":"stocktaker"},
{"cat_id":"9","cat_name":"builder"},
{"cat_id":4,"cat_name":"dentist"},
{"cat_id":5,"cat_name":"stocktaker"},
{"cat_id":3,"cat_name":"electrician"}]]

Как видите, дубликаты не удаляются, и есть лишние [] и "results"пропал, отсутствует.

Можете ли вы сказать мне, как я могу это исправить, или другой способ сделать это?

1 Ответ

0 голосов
/ 30 мая 2018

Используйте приведенное ниже решение

$array1 = '{"results":[{"cat_id":2,"cat_name":"veterinarian"},{"cat_id":3,"cat_name":"electrician"},{"cat_id":4,"cat_name":"dentist"}]}';
$array2 = '{"results":[{"cat_id":"8","cat_name":"dental hygienist"},{"cat_id":"5","cat_name":"stocktaker"},{"cat_id":"9","cat_name":"builder"}]}';
$array3 = '{"results":[{"cat_id":4,"cat_name":"dentist"},{"cat_id":5,"cat_name":"stocktaker"},{"cat_id":3,"cat_name":"electrician"}]}';

$array1 =  json_decode($array1, TRUE);
$array2 =  json_decode($array2, TRUE);
$array3 =  json_decode($array3, TRUE);

$array4 = array_merge_recursive($array1['results'], $array2['results'], $array3['results']);

$uniqueArray['results'] = array_values(array_unique($array4, SORT_REGULAR));
...