当前位置:首页 > PHP

PHP实现数组打乱

2026-02-16 14:27:45PHP

使用shuffle函数

PHP内置的shuffle()函数可直接打乱数组顺序。该函数会修改原数组,返回布尔值表示是否成功。适用于索引数组(键名会被重置为连续数字)。

$array = [1, 2, 3, 4, 5];
shuffle($array);
print_r($array);

保留键名的随机排序

若需保留关联数组的键名,可使用array_rand()结合循环实现。通过随机抽取键名并重组数组完成打乱。

$array = ['a' => 1, 'b' => 2, 'c' => 3];
$keys = array_keys($array);
shuffle($keys);
$shuffled = [];
foreach ($keys as $key) {
    $shuffled[$key] = $array[$key];
}
print_r($shuffled);

自定义随机排序算法

通过usort()uksort()自定义比较函数,利用rand()生成随机排序因子。适用于需要控制随机逻辑的场景。

$array = [10, 20, 30, 40];
usort($array, function($a, $b) {
    return rand(-1, 1);
});
print_r($array);

使用Fisher-Yates算法

手动实现Fisher-Yates洗牌算法,从数组末尾开始,随机选择元素交换位置。此方法高效且保证均匀随机。

PHP实现数组打乱

$array = ['x', 'y', 'z'];
for ($i = count($array) - 1; $i > 0; $i--) {
    $j = rand(0, $i);
    list($array[$i], $array[$j]) = [$array[$j], $array[$i]];
}
print_r($array);

标签: 数组PHP
分享给朋友:

相关文章

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

java如何遍历数组

java如何遍历数组

遍历数组的方法 Java中遍历数组有多种方式,以下是常见的几种方法: 使用for循环 通过索引逐个访问数组元素: int[] array = {1, 2, 3, 4, 5}; for (int i…

vue实现数组全选

vue实现数组全选

Vue 实现数组全选功能 在 Vue 中实现数组全选功能通常涉及以下几个步骤: 数据绑定与状态管理 创建一个数组来存储所有选项的数据,并添加一个 selectedItems 数组来存储已选中的项。使…

PHP实现级差

PHP实现级差

级差的概念 级差通常指按照不同等级或范围计算差异值,例如阶梯定价、绩效奖金等场景。PHP中可通过条件判断、循环或数学运算实现。 基础条件判断法 通过if-else或switch结构直接划分等级区间:…