怎么把一个php随机打乱

不及物动词 其他 119

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要将一个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年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    要在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年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要将一个 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年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部