随机选取数组中的元素,然后从数组中删除

2022-08-30 20:41:50

我有一系列短语。我想从循环中的数组中随机选择短语。我不想在循环中多次选择相同的短语。我想我可以随机选择这个短语,然后在下一个循环之前删除它。

http://codepad.org/11l0nStX

<?php
for ($i=0; $i<16; $i++) {
    $phrases = array(
        'Hello Sailor', 'Acid Test', 'Bear Garden', 'Botch A Job',
        'Dark Horse', 'In The Red', 'Man Up', 'Pan Out',
        'Quid Pro Quo', 'Rub It In', 'Turncoat', 'Yes Man',
        'All Wet', 'Bag Lady', 'Bean Feast', 'Big Wig',
    );

    $ran_Num = array_rand($phrases);
    $ran_Phrase = $phrases[$ran_Num];
    unset($phrases[$ran_Phrase]);
    echo $ran_Phrase . "\r\n";
    echo count($phrases) . "\r\n";
}

是否可以从每个循环的数组中随机选择不同的短语?


答案 1

以随机顺序随机排列数组,然后弹出最后一个元素。

$array = [...];

shuffle($array);

while($element = array_pop($array)){
  echo 'Random element:' . $element;
}

答案 2

您也可以使用array_slice

$ran_Num = array_rand($phrases);
$ran_Phrase = array_slice($phrases, $ran_Num, 1);