怎么把一个php随机打乱
-
要将一个PHP数组打乱顺序,可以使用PHP内置的shuffle()函数。shuffle()函数会随机重新排列数组中的元素顺序。下面是示例代码:
“`php
“`上述代码将打乱$arr数组的顺序,输出结果类似于:
“`
Array
(
[0] => Orange
[1] => Cherry
[2] => Banana
[3] => Grapes
[4] => Apple
)
“`此外,如果你不想改变原始数组的顺序,可以使用array_rand()函数来获取一个随机排序的索引数组,然后再根据这个索引数组获取原始数组的元素。以下是示例代码:
“`php
“`这段代码中,用array_rand()函数生成一个包含原数组随机键名的索引数组$random_keys。然后通过foreach循环,将原数组中的元素按照随机键名的顺序加入新的数组$shuffled_arr。最终输出$shuffled_arr,即为打乱顺序后的数组。
2年前 -
要在PHP中随机打乱数组或字符串,您可以使用一些内置函数和算法。以下是五种常见的方法:
1. 使用shuffle()函数:shuffle()函数将随机打乱数组中的元素的顺序。例如:
“`
$myArray = array(1, 2, 3, 4, 5);
shuffle($myArray);
print_r($myArray);
“`输出可能类似于:[3, 5, 1, 4, 2]。
2. 使用str_shuffle()函数:str_shuffle()函数将随机打乱字符串中的字母顺序。例如:
“`
$myString = “Hello”;
echo str_shuffle($myString);
“`输出可能类似于:”oHlle”。
3. 使用array_rand()函数和shuffle()函数的结合:array_rand()函数用于随机选择数组中的一个或多个键,然后使用shuffle()函数打乱选择的键的顺序。例如:
“`
$myArray = array(1, 2, 3, 4, 5);
$randomKeys = array_rand($myArray, 3);
$randomArray = array();if (is_array($randomKeys)) {
foreach ($randomKeys as $key) {
$randomArray[] = $myArray[$key];
}
} else {
$randomArray[] = $myArray[$randomKeys];
}shuffle($randomArray);
print_r($randomArray);
“`输出可能类似于:[4, 1, 2]。
4. 使用自定义的算法:您还可以使用自定义的算法来实现打乱数组的目的。以下是一个示例:
“`
function customShuffle($array) {
$count = count($array);
for ($i = 0; $i < $count; $i++) { $rand = rand(0, $count - 1); $temp = $array[$rand]; $array[$rand] = $array[$i]; $array[$i] = $temp; } return $array;}$myArray = array(1, 2, 3, 4, 5);$shuffledArray = customShuffle($myArray);print_r($shuffledArray);```输出可能类似于:[3, 1, 4, 2, 5]。5. 使用Fisher-Yates算法:Fisher-Yates算法是一种常用的打乱数组的算法。以下是一个使用Fisher-Yates算法的示例:```function fisherYatesShuffle($array) { $count = count($array); for ($i = $count - 1; $i > 0; $i–) {
$rand = rand(0, $i);
$temp = $array[$rand];
$array[$rand] = $array[$i];
$array[$i] = $temp;
}
return $array;
}$myArray = array(1, 2, 3, 4, 5);
$shuffledArray = fisherYatesShuffle($myArray);
print_r($shuffledArray);
“`输出可能类似于:[2, 3, 5, 1, 4]。
通过使用这些方法之一,您可以在PHP中轻松地打乱数组或字符串的顺序。
2年前 -
要将一个 PHP 数组随机打乱,可以使用 Fisher-Yates 洗牌算法(也称为 Knuth 洗牌算法)。该算法通过遍历数组,将当前元素与随机位置的元素交换位置来实现打乱的效果。
下面是实现该算法的代码:
“`php
0; $i–) {
$randIndex = rand(0, $i);
// 交换当前元素与随机位置的元素
$temp = $array[$i];
$array[$i] = $array[$randIndex];
$array[$randIndex] = $temp;
}
return $array;
}// 要打乱的数组
$myArray = array(1, 2, 3, 4, 5, 6, 7, 8, 9);// 打乱数组
$shuffledArray = shuffleArray($myArray);// 打印打乱后的数组
print_r($shuffledArray);
?>
“`上述代码中,`shuffleArray` 函数接受一个需要打乱的数组作为参数,并使用 `count` 函数获取数组的长度。然后通过 `for` 循环从后往前遍历数组,对于每个元素,生成一个随机位置的索引 `randIndex`,然后将当前元素与随机位置的元素交换位置。最后返回打乱后的数组。
在代码的最后,我们创建了一个测试数组 `$myArray`,并将其传递给 `shuffleArray` 函数进行打乱。然后使用 `print_r` 函数打印打乱后的数组。
请注意,`rand` 函数用于生成一个随机的索引位置,该函数接受两个参数,表示随机数的范围。在上述代码中,我们使用 `$i`(当前元素的索引)和 `0`(数组的起始位置)作为参数。这样就可以确保生成的随机索引在当前元素和数组起始位置之间。
2年前