Удаление повторов в массиве php

172
26 января 2019, 11:30

Есть массив

[{"id":256,"owner":"2","to":"1","message":"312"},
{"id":257,"owner":"2","to":"1","message":"312"},
{"id":258,"owner":"1","to":"1","message":"3125"},
{"id":259,"owner":"3","to":"1","message":"3162"},
{"id":260,"owner":"2","to":"1","message":"3125"}]

В котором значение to всегда одинаковое, message как повезет(совпадет или нет), а owner разное, с повторениями, как удалить все повторения, которые встречаются в owner и оставить по 1 значению с наибольшим id(То есть последнее)

Пробовал воспользоваться функцией array_unique но она удаляет всё, так как to у всех одинаковое

Answer 1

Решение, при условии что данные предварительно отсортированы по id :

$data = [
    ["id" => 256, "owner" => "2", "to" => "1", "message" => "312"],
    ["id" => 257, "owner" => "2", "to" => "1", "message" => "312"],
    ["id" => 258, "owner" => "1", "to" => "1", "message" => "3125"],
    ["id" => 259, "owner" => "3", "to" => "1", "message" => "3162"],
    ["id" => 260, "owner" => "2", "to" => "1", "message" => "3125"]
];
foreach ($data as $item) {
    $ret[$item['owner']] = $item;
}
var_dump($ret);
Answer 2

Если сортировка в массиве будет по ID, то можно попробовать такой способ

<?php //php 7.0.8
$values = '[
    {"id":256,"owner":"2","to":"1","message":"312"},
    {"id":257,"owner":"2","to":"1","message":"312"},
    {"id":258,"owner":"1","to":"1","message":"3125"},
    {"id":259,"owner":"3","to":"1","message":"3162"},
    {"id":260,"owner":"2","to":"1","message":"3125"}
]';
$values = json_decode($values, true);
$array = [];
foreach($values as $val){
    $array[$val['owner']] = [
        'id' => $val['id'],
        'to' => $val['to'],
        'message' => $val['message']
    ];
}
var_dump($array);
?>

(выполнить код в rextester)

READ ALSO
Как в php удалить все, что между /* все */? [закрыт]

Как в php удалить все, что между /* все */? [закрыт]

Нужно регулярное выражение, и именно это, больше ничего

198
Как подключить DomPdf к PHPExcel?

Как подключить DomPdf к PHPExcel?

Я пытаюсь сгенерировать PDF файл из XLS

171
Неправильное перенаправление на javascript

Неправильное перенаправление на javascript

С помощью ajax я отправляю запрос серверуСервер посылает мне url адресс (строку) на которую мне надо перейти с помощью javascript

173