我怎么能除去数组中我随机化的元素呢?


How could I except a certain element in arrays those I randomized them using Shuffle function?

我如何在多维数组中使用Shuffle函数随机化某个元素?

假设我有这个脚本:

$array = array(
  array("Bird", "Brown", "Bear", "Bangkok", "Bat"),
  array("Carrot", "Cat", "Crispy", "Cross", "Cable"),
  array("All", "Apple", "Adam", "Apart", "Air")
);
array_walk($array, function (&$array) { shuffle($array); });
shuffle($array);

该脚本将给我一个垂直排列的数组和每个数组中的元素。

我需要的是除了第一个元素(位置0)为每个数组,我怎么能做到这一点,请问?

明显的解决方案是这样的:

// Remove and store the first element in a temporary variable
$firstElement = array_shift($array);
// Shuffle the remaining items
shuffle($array);
// Re-add (prepend) the original first item
array_unshift($array, $firstElement);

这可以很容易地应用到您的具体示例中:

function customShuffle(array &$array) {
    $firstElement = array_shift($array);
    shuffle($array);
    array_unshift($array, $firstElement);
}
$array = array(
  array("Bird", "Brown", "Bear", "Bangkok", "Bat"),
  array("Carrot", "Cat", "Crispy", "Cross", "Cable"),
  array("All", "Apple", "Adam", "Apart", "Air")
);
                                         // vvvvv //
array_walk($array, function (&$array) { customShuffle($array); });
shuffle($array);  // use "customShuffle" as well if needed