Удалить повторяющиеся элементы из объекта php

{"id":34,"first_name":"xus"}
{"id":34,"first_name":"xus"}
{"id":4,"first_name":"ABC"}
{"id":4,"first_name":"ABC"}

$newlist = [];
$values = [];
foreach ($appointment_list as $key => $value) {
    # code...
    $values[] = $value['users'];
    foreach($values as $val){

            $newlist[$val->id]=$values;
    }
    unset($newlist[$key][$values]);
}

Я хочу удалить повторяющееся значение из объекта, отображающего отдельную базу значений по идентификатору, и хочу подсчитать наличие дубликатов каждого идентификатора

Ожидал

id 34 has 2 duplicate

и он должен вернуть один объект

{"id":34,"first_name":"xus", "count":2} 

что-то вроде того

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Можно использовать array_reduce

$arr = array(
    array("id" => 34,"first_name" => "xus"),
    array("id" => 34,"first_name" => "xus"),
    array("id" => 4,"first_name" => "ABC"),
    array("id" => 4,"first_name" => "ABC"),
);

$result = array_reduce($arr, function($c, $v){
    if ( !isset( $c[$v["id"]] ) ) {
        $c[$v["id"]] = $v;
        $c[$v["id"]]["count"] = 1;
    } else {
        $c[$v["id"]]["count"]++;
    }
    return $c;
}, array());

$result = array_values( $result );

echo "<pre>";
print_r( $result );
echo "</pre>";

Это приведет к:

Array
(
    [0] => Array
        (
            [id] => 34
            [first_name] => xus
            [count] => 2
        )

    [1] => Array
        (
            [id] => 4
            [first_name] => ABC
            [count] => 2
        )

)

Если у нас будет больше ключевых значений, это может быть больше, чем многие значения пола, возраста, роженицы и т.

Ricky 11.03.2018 14:29

Спасибо Эдди оценил ваше время

Ricky 11.03.2018 14:42

Рад помочь @Ricky

Eddie 11.03.2018 14:42

Можно сделать одной строкой: array_unique($arr, SORT_REGULAR);

Aniket Sahrawat 11.03.2018 15:24

@AniketSahrawat Как вы будете считать только с array_unique?

Eddie 11.03.2018 15:29

Самый простой способ сделать это - создать пустой массив и сопоставить ваши объекты, используя «id» в качестве ключа.

Вот рабочий фрагмент

<?php
$objectsRaw = [];
$objectsRaw[] = '{"id":34,"first_name":"xus"}';
$objectsRaw[] = '{"id":34,"first_name":"xus"}';
$objectsRaw[] = '{"id":4,"first_name":"ABC"}';
$objectsRaw[] = '{"id":4,"first_name":"ABC"}';

# decode the json objects into PHP arrays
$objects = array_map(
    function($objectJson) {
        $object = json_decode($objectJson, true);
        return $object;
    },
    $objectsRaw
);

# map the objects
$result = [];
foreach($objects as $object) {
    if (array_key_exists($object['id'], $result) === false) {
        $object['count'] = 1;
        $result[$object['id']] = $object;
        continue;
    }
    $result[$object['id']]['count']++;
}

# encode result
$resultRaw = array_map('json_encode', $result);
# would look like
# Array
# (
#     [34] => {"id":34,"first_name":"xus","count":2}
#     [4] => {"id":4,"first_name":"ABC","count":2}
# )

# reset array keys (if you need this)
$resultRaw = array_values($resultRaw);
# would look like
# Array
# (
#     [0] => {"id":34,"first_name":"xus","count":2}
#     [1] => {"id":4,"first_name":"ABC","count":2}
# )

Другие вопросы по теме