Php 如何比较两组不同的数组

Php 如何比较两组不同的数组,php,Php,我正在尝试创建一个“秘密圣诞老人”类型的程序,跟踪谁发送给谁。我有一个数据库,它存储了混乱的发送者和接收者id,但我遇到的问题是如何创建下个月的发送者和接收者匹配。它需要确保发送者不会连续两次(或紧密地)向同一个人发送邮件。我想到了在4个数组中循环,$pastsenders,$pastreceivers,$currentsenders$currentreceivers,但是我不知道如何将这两个集合进行比较,看看是否匹配,如果匹配,则重新洗牌当前发送方和接收方。有人能帮忙吗?用发送者的名字作为键,

我正在尝试创建一个“秘密圣诞老人”类型的程序,跟踪谁发送给谁。我有一个数据库,它存储了混乱的发送者和接收者id,但我遇到的问题是如何创建下个月的发送者和接收者匹配。它需要确保发送者不会连续两次(或紧密地)向同一个人发送邮件。我想到了在4个数组中循环,$pastsenders,$pastreceivers,$currentsenders$currentreceivers,但是我不知道如何将这两个集合进行比较,看看是否匹配,如果匹配,则重新洗牌当前发送方和接收方。有人能帮忙吗?

用发送者的名字作为键,用接收者的名字作为值


要进行检查,只需遍历所有键,并查看是否有一个键在这个月数组和下个月数组中具有相同的值。如果是,那么您需要重新安排下个月的列表。

这里有一个快速可行的解决方案。 秘密圣诞老人是一群交换礼物的人,对吗? 我的建议是把这个列表分成两部分,给予者和接受者。我知道从技术上讲,他们既是施舍者又是接受者,但我们的想法是在另一个被洗牌的时候,有一个固定的列表

<?php
    $givers = array("Person 1","Person 2","Person 3","Person 4","Person 5","Person 6") ;
    $receivers = array("Person 7","Person 8","Person 9","Person 10","Person 11","Person 12");
    $new_receivers = $receivers;
    $repeated_values = $new_receivers;

    while(sizeof($repeated_values) > 0)
    {
        shuffle($new_receivers);
        $repeated_values = array_intersect_assoc($receivers, $new_receivers);
    }
?>

所以,如果我能说清楚的话。名单上的一半,即送礼者,总是保持不变。然后加载最后交换礼物的另一半人的列表/数组,匹配他们的数组位置。洗牌接受者的名单,直到所有的位置都改变了,你就完成了。 有道理吗?希望这有帮助