[英]How to combine two arrays in a php shuffle
我正在嘗試創建隨機播放功能以使人們結對進行禮物交換。 我創建了它的基本外殼,但我不確定如何從這里開始。 我正在獲取輸出以對數據進行混洗,但是我想將array_give
和array_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!
合並到數組的函數稱為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.