Php 试图清除仅出现一次的数组

Php 试图清除仅出现一次的数组,php,arrays,algorithm,Php,Arrays,Algorithm,所以情况是这样的:我得到了一个数组,其中包含用户之间的消息,-> Array ( [0] => Array ( [id_message] => 17 [id_user_sending] => 4 [id_user_receiving] => 2 [date] => 2020-02-19 01:03:50 [content]

所以情况是这样的:我得到了一个数组,其中包含用户之间的消息,->

Array
(
    [0] => Array
        (
            [id_message] => 17
            [id_user_sending] => 4
            [id_user_receiving] => 2
            [date] => 2020-02-19 01:03:50
            [content] => yo !!
            [msg_read] => 1
        )

    [1] => Array
        (
            [id_message] => 18
            [id_user_sending] => 4
            [id_user_receiving] => 2
            [date] => 2020-02-19 01:03:50
            [content] => yo !!
            [msg_read] => 1
        )

    [2] => Array
        (
            [id_message] => 16
            [id_user_sending] => 4
            [id_user_receiving] => 2
            [date] => 2020-02-19 01:03:48
            [content] => yo
            [msg_read] => 1
        )

    [3] => Array
        (
            [id_message] => 15
            [id_user_sending] => 4
            [id_user_receiving] => 1
            [date] => 2020-02-19 01:03:44
            [content] => kk
            [msg_read] => 1
        )

    [4] => Array
        (
            [id_message] => 14
            [id_user_sending] => 4
            [id_user_receiving] => 3
            [date] => 2020-02-19 01:03:27
            [content] => hey
            [msg_read] => 1
        )

    [5] => Array
        (
            [id_message] => 13
            [id_user_sending] => 4
            [id_user_receiving] => 2
            [date] => 2020-02-19 01:03:22
            [content] => salut !
            [msg_read] => 1
        )

    [6] => Array
        (
            [id_message] => 12
            [id_user_sending] => 4
            [id_user_receiving] => 1
            [date] => 2020-02-19 00:47:50
            [content] => yo ?
            [msg_read] => 1
        )

    [7] => Array
        (
            [id_message] => 11
            [id_user_sending] => 3
            [id_user_receiving] => 4
            [date] => 2020-02-19 00:47:27
            [content] => hey dernier test !
            [msg_read] => 1
        )

    [8] => Array
        (
            [id_message] => 10
            [id_user_sending] => 2
            [id_user_receiving] => 4
            [date] => 2020-02-19 00:47:17
            [content] => yo eksjsjs !
            [msg_read] => 1
        )

    [9] => Array
        (
            [id_message] => 9
            [id_user_sending] => 1
            [id_user_receiving] => 4
            [date] => 2020-02-19 00:47:05
            [content] => salut !
            [msg_read] => 1
        )

)
所连接用户的ID为4 我希望只出现一次就清除这个数组,以便根据用户(id 4)创建一个只包含一个字段的聊天列表,而不考虑它们之间的消息

所以我编写了两个函数,其中有一个问题-->

这里返回函数rend\u moi\u une\u occurrence\u par\u conv,因此我优先选择$arraytoconvertinJson-->

我很确定我在函数中的状态还不太好,但是24小时后我在寻求帮助

这是我想要的返回,所以连接的用户的id是4,我想要得到一个mult数组,其中包含他和他自己以及他和其他用户之间的最后一条消息

    Array
    (
        [0] => Array
            (
                [id_message] => 19
                [id_user_sending] => 4
                [id_user_receiving] => 2
                [date] => 2020-02-19 13:01:53
                [content] => yo
                [msg_read] => 1
            )

        [1] => Array
            (
                [id_message] => 11
                [id_user_sending] => 3
                [id_user_receiving] => 4
                [date] => 2020-02-19 00:47:27
                [content] => hey dernier test !
                [msg_read] => 1
            )
        [2] => Array
                (
                    [id_message] => 15
                    [id_user_sending] => 1
                    [id_user_receiving] => 4
                    [date] => 2020-02-19 00:47:27
                    [content] => hey dernier test !
                    [msg_read] => 1
                )
        [3] => Array
                    (
                      [id_message] => 
                        [id_user_sending] => 4
                        [id_user_receiving] => 4
                        [date] => 2020-02-19 00:47:27
                        [content] => hey dernier test !
                        [msg_read] => 1
                    )

    )
这是我想要的返回,所以连接的用户的id是4,我想要得到一个mult数组,其中包含他和他自己以及他和其他用户之间的最后一条消息(这不是一个有效的输出,我只是修改id user sending/receiving的值作为示例)。 -->


谢谢你们的帮助,我是新来的,所以如果不是很清楚的话,请告诉我。

我不是100%确定你们在问什么,但这是为了获取发送给用户的最新消息

function getLatestMessages(array $messages, $receiverId) {
    $times = [];
    $chats = [];
    foreach ($messages as $message) {
        if ($message['id_user_receiving'] === $receiverId) {
            $senderId = $message['id_user_sending'];
            if (!isset($times[$senderId])) {
                $times[$senderId] = 0;
            }
            $date = new DateTime($message['date']);
            $unix = $date->getTimestamp();
            if ($unix > $times[$senderId]) {
                $times[$senderId] = $unix;
                $chats[$senderId] = $message;
            }
        }
    }
    return $chats;
}
要获取每个人向用户3发送的最新消息,请执行以下操作:

getLatestMessages($messages, 3);
结果:

Array
(
    [1] => Array
        (
            [id_message] => 12
            [id_user_sending] => 1
            [id_user_receiving] => 3
            [date] => 2020-02-19 09:03:50
            [content] => Last message from user 1 to user 3
            [msg_read] => 1
        )

    [2] => Array
        (
            [id_message] => 77
            [id_user_sending] => 2
            [id_user_receiving] => 3
            [date] => 2020-02-19 10:03:50
            [content] => Only message from user 2 to user 3
            [msg_read] => 1
        )

)
这是我使用的样本数据

$messages = [
    [
        'id_message' => 17,
        'id_user_sending' => 1,
        'id_user_receiving' => 1,
        'date' => '2020-02-19 01:03:50',
        'content' => 'Only message from user 1 to user 1',
        'msg_read' => 1
    ],
    [
        'id_message' => 53,
        'id_user_sending' => 3,
        'id_user_receiving' => 1,
        'date' => '2020-02-19 02:03:50',
        'content' => 'First message from user 3 to user 1',
        'msg_read' => 1
    ],
    [
        'id_message' => 32,
        'id_user_sending' => 3,
        'id_user_receiving' => 1,
        'date' => '2020-02-19 03:03:50',
        'content' => 'Last message from user 3 to user 1',
        'msg_read' => 1
    ],
    [
        'id_message' => 72,
        'id_user_sending' => 2,
        'id_user_receiving' => 2,
        'date' => '2020-02-19 04:03:50',
        'content' => 'Only message from user 2 to user 2',
        'msg_read' => 1
    ],
    [
        'id_message' => 4,
        'id_user_sending' => 1,
        'id_user_receiving' => 2,
        'date' => '2020-02-19 05:03:50',
        'content' => 'Only message from user 1 to user 2',
        'msg_read' => 1
    ],
    [
        'id_message' => 82,
        'id_user_sending' => 3,
        'id_user_receiving' => 2,
        'date' => '2020-02-19 06:03:50',
        'content' => 'Only message from user 3 to user 2',
        'msg_read' => 1
    ],
    [
        'id_message' => 145,
        'id_user_sending' => 1,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 07:03:50',
        'content' => 'First message from user 1 to user 3',
        'msg_read' => 1
    ],
    [
        'id_message' => 31,
        'id_user_sending' => 1,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 08:03:50',
        'content' => 'Second message from user 1 to user 3',
        'msg_read' => 1
    ],
    [
        'id_message' => 12,
        'id_user_sending' => 1,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 09:03:50',
        'content' => 'Last message from user 1 to user 3',
        'msg_read' => 1
    ],
    [
        'id_message' => 77,
        'id_user_sending' => 2,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 10:03:50',
        'content' => 'Only message from user 2 to user 3',
        'msg_read' => 1
    ],
];

“这里是函数的返回”-这应该是你想要的,还是你目前得到的?我不确定你所说的“我想通过一次事件清除此数组,以便用户创建一个仅包含一个字段的聊天列表,与他们之间的消息方式无关”,这可以从更好的解释开始。抱歉,我将尝试更好地解释这一点,我仍然需要提高我的英语水平^^^所以我希望在期末考试中,ArraytoconvertInjson为两个用户之间的每个对话都包含一个字段。输入(你做过)如何显示代码(你做过)显示输出(我想你做过),但最重要的是,(显示你想要的输出)并描述用于将输入转换为输出的规则,以便快速响应,我会给出我想要的答案get@AnantSingh---AlivetoDie谢谢你的评论和帮助,我是stackoverflow的新手。非常感谢你的工作,现在我明白为什么我的功能没有了。。
getLatestMessages($messages, 3);
Array
(
    [1] => Array
        (
            [id_message] => 12
            [id_user_sending] => 1
            [id_user_receiving] => 3
            [date] => 2020-02-19 09:03:50
            [content] => Last message from user 1 to user 3
            [msg_read] => 1
        )

    [2] => Array
        (
            [id_message] => 77
            [id_user_sending] => 2
            [id_user_receiving] => 3
            [date] => 2020-02-19 10:03:50
            [content] => Only message from user 2 to user 3
            [msg_read] => 1
        )

)
$messages = [
    [
        'id_message' => 17,
        'id_user_sending' => 1,
        'id_user_receiving' => 1,
        'date' => '2020-02-19 01:03:50',
        'content' => 'Only message from user 1 to user 1',
        'msg_read' => 1
    ],
    [
        'id_message' => 53,
        'id_user_sending' => 3,
        'id_user_receiving' => 1,
        'date' => '2020-02-19 02:03:50',
        'content' => 'First message from user 3 to user 1',
        'msg_read' => 1
    ],
    [
        'id_message' => 32,
        'id_user_sending' => 3,
        'id_user_receiving' => 1,
        'date' => '2020-02-19 03:03:50',
        'content' => 'Last message from user 3 to user 1',
        'msg_read' => 1
    ],
    [
        'id_message' => 72,
        'id_user_sending' => 2,
        'id_user_receiving' => 2,
        'date' => '2020-02-19 04:03:50',
        'content' => 'Only message from user 2 to user 2',
        'msg_read' => 1
    ],
    [
        'id_message' => 4,
        'id_user_sending' => 1,
        'id_user_receiving' => 2,
        'date' => '2020-02-19 05:03:50',
        'content' => 'Only message from user 1 to user 2',
        'msg_read' => 1
    ],
    [
        'id_message' => 82,
        'id_user_sending' => 3,
        'id_user_receiving' => 2,
        'date' => '2020-02-19 06:03:50',
        'content' => 'Only message from user 3 to user 2',
        'msg_read' => 1
    ],
    [
        'id_message' => 145,
        'id_user_sending' => 1,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 07:03:50',
        'content' => 'First message from user 1 to user 3',
        'msg_read' => 1
    ],
    [
        'id_message' => 31,
        'id_user_sending' => 1,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 08:03:50',
        'content' => 'Second message from user 1 to user 3',
        'msg_read' => 1
    ],
    [
        'id_message' => 12,
        'id_user_sending' => 1,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 09:03:50',
        'content' => 'Last message from user 1 to user 3',
        'msg_read' => 1
    ],
    [
        'id_message' => 77,
        'id_user_sending' => 2,
        'id_user_receiving' => 3,
        'date' => '2020-02-19 10:03:50',
        'content' => 'Only message from user 2 to user 3',
        'msg_read' => 1
    ],
];