当前位置 : 首页 » 互动问答 » 正文

如何在php shuffle中组合两个数组

分类 : 互动问答 | 发布时间 : 2018-04-27 15:06:17 | 评论 : 2 | 浏览 : 31 | 喜欢 : 0

我正在尝试创建一个混搭功能,让人们可以配对交换礼物。我创造了它的基本外壳,我不确定从哪里去。我得到输出来洗牌数据,但是我想结合两个array_give and array_receive 变量,以便它会输出一些东西:

Paul&Becky给Keith&Jackie。

虽然我不确定如何结合这个。 array_give变量不需要混洗,只需 array_receive 变量即可。

也有一种方法可以确保结果不会像以下那样显示吗?

Paul&Becky给出的Paul&Becky

这是我的代码。任何帮助将不胜感激。

HTML

 <button type =“button”id =“shuffle”>创建Exchange </ button>
<div id =“name-output”> </ div>
<(notranslate> $('#shuffle')。on('click',function(){
        $就({
            网址:'php / name-selection.php',
            键入:'POST',
            成功:功能(数据){
                $( '#名称 - 产出')HTML(数据)。
            },
            完成:函数(){

            },
            错误:函数(xhr,textStatus,errorThrown){
                alert(textStatus +'|'+ errorThrown);
            }
        });
    })

JS

 $ array_give = array('Paul&Becky','Keith&Jackie','Dave&Lauren','Ashley&Jeric','Rob&Savannah');
$ array_receive = array('Paul&Becky','Keith&Jackie','Dave&Lauren','Ashley&Jeric','Rob&Savannah');

洗牌($ array_receive);

foreach($ array_receive as $ receiving){
    回声$收到。 “结果”;
}

PHP

$array_give = array('Paul & Becky', 'Keith & Jackie', 'Dave & Lauren', 'Ashley & Jeric', 'Rob & Savannah');
$array_receive = array('Paul & Becky', 'Keith & Jackie', 'Dave & Lauren', 'Ashley & Jeric', 'Rob & Savannah');

shuffle($array_receive);

foreach( $array_receive as $receiving) {
    echo $receiving . "<br>";
}

回答(2)

  • 1楼
  • 由于数组本质上是相同的,所以你只需要一个数组。

    然后,您可以在每次迭代时弹出/挑选每个元素,这将停止自我馈赠并允许检查某人不会收到礼物,bah humbug!

     <?php
    $ array_give = array('Paul&Becky','Keith&Jackie','Dave&Lauren','Ashley&Jeric','Rob&Savannah');
    
    洗牌($ array_give);
    
    $ i = 0;
    while($ give = array_pop($ array_give)){
        echo $ give;
        if($ i%2!= 0){
            回声“<br>”.PHP_EOL;
        } elseif(count($ array_give)== 0){
            回声'越来越zilch! “;
            打破;
        } else {
            回声'正在给';
        }
        $ I ++;
    }
    

    .

    罗布和萨凡纳正在给Ashley&Jeric <br>
    戴夫和劳伦正在给基思和杰基<br>
    保罗&贝基得到zilch!
    

    https://3v4l.org/KtJ47

  • 2楼
  • 与数组结合的函数称为 array_combine 。你可以阅读here,并像这样使用它:

     <?php
    函数checkSame($ a,$ b){
      foreach(array_combine($ a,$ b)为$ key => $ value)
        如果($ key === $ value)返回true;
      返回false;
    }
    
    $ array_give = array('Paul&Becky','Keith&Jackie','Dave&Lauren','Ashley&Jeric','Rob&Savannah');
    $ array_receive = array('Paul&Becky','Keith&Jackie','Dave&Lauren','Ashley&Jeric','Rob&Savannah');
    
    while(checkSame($ array_give,$ array_receive))shuffle($ array_receive);
    
    foreach(array_combine($ array_give,$ array_receive)作为$ give => $ receiving)
    {
      echo $ give。 “给”。$收到。 “结果”;
    }
    

    我的预防自我礼物的想法是简单地继续洗牌,直到没有人被分配给自己。理论上这可能会永远运行,但我认为对于大多数实际应用来说,它会很快停止。

相关阅读: