簡體   English   中英

如何在PHP Shuffle中合並兩個數組

[英]How to combine two arrays in a php shuffle

我正在嘗試創建隨機播放功能以使人們結對進行禮物交換。 我創建了它的基本外殼,但我不確定如何從這里開始。 我正在獲取輸出以對數據進行混洗,但是我想將array_givearray_receive變量組合在一起,以便它將沿着以下內容輸出內容:

Paul&Becky向Keith&Jackie捐款。

不過,我不確定如何結合使用。 array_give變量並不需要洗牌,只是array_receive變量一樣。

還有沒有辦法確保結果不會顯示如下?

Paul&Becky奉獻給Paul&Becky

這是我的代碼。 任何幫助,將不勝感激。

HTML

<button type="button" id="shuffle">Create Exchange</button>
<div id="name-output"></div>

JS

$('#shuffle').on('click', function() {
        $.ajax({
            url: 'php/name-selection.php',
            type: 'POST',
            success: function(data) {
                $('#name-output').html(data);
            },
            complete:function(){

            },
            error: function(xhr, textStatus, errorThrown) {
                alert(textStatus + '|' + errorThrown);
            }
        });
    })

的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>";
}

由於陣列本質上是相同的,因此您只需要一個陣列。

然后,您可以在每次迭代中彈出/拾取每個元素,這將停止自我禮物,並允許檢查某人不會收到禮物,,哼!

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

shuffle($array_give);

$i = 0;
while ($give = array_pop($array_give)) {
    echo $give;
    if ($i % 2 != 0) {
        echo "<br>".PHP_EOL;
    } elseif (count($array_give) == 0) {
        echo ' is getting zilch! ';
        break;
    } else {
        echo ' are giving to ';
    }
    $i++;
}

Rob & Savannah are giving to Ashley & Jeric<br>
Dave & Lauren are giving to Keith & Jackie<br>
Paul & Becky is getting zilch! 

https://3v4l.org/KtJ47

合並到數組的函數稱為array_combine 您可以在此處閱讀有關內容,並像這樣使用它:

<?php
function checkSame ($a, $b) {
  foreach (array_combine($a,$b) as $key => $value)
    if ($key===$value) return true;
  return 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) as $give => $receiving) 
{
  echo $give. " give to ".$receiving . "<br>";
}

我防止自發禮物的想法是簡單地繼續調整數組,直到沒有人分配給自己。 從理論上講,這可以永遠持續下去,但是我認為,對於大多數實際用途,它將很快停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM