php以固定顺序有规律的打乱数组

通过某个key来实现固定顺序的打乱数组,使用不同的key打乱的顺序都不一样,但是同样的key每次打乱的顺序都是相同的。

<?php
function shuffle_array($array,$seed){
    mt_srand($seed);
    for($i=count($array)-1;$i>0;$i--){
        $j = mt_rand(0,$i);
        $tmp = $array[$i];
        $array[$i] = $array[$j];
        $array[$j] = $tmp;
    }
    return $array;
}

这里第二个参数$seed只能传入数字。

测试效果

$array = ['aa','bb','cc','dd','ee','ff','gg'];
$array2 = shuffle_array($array,123456);
$array3 = shuffle_array($array,123456);
echo 'array2:';
print_r($array2);
echo 'array3:';
print_r($array3);
$array4 = shuffle_array($array,654321);
echo 'array4:';
print_r($array4);

执行后会输出:

array2:Array
(
    [0] => cc
    [1] => gg
    [2] => ff
    [3] => bb
    [4] => aa
    [5] => ee
    [6] => dd
)
array3:Array
(
    [0] => cc
    [1] => gg
    [2] => ff
    [3] => bb
    [4] => aa
    [5] => ee
    [6] => dd
)
array4:Array
(
    [0] => ee
    [1] => ff
    [2] => bb
    [3] => dd
    [4] => gg
    [5] => cc
    [6] => aa
)
php打乱数组

可以看到,使用同样的key打乱出来的顺序始终都是相同的,更换不同的key才会改变打乱的顺序。

原创文章,作者:小哆啦,如若转载,请注明出处:https://www.notevm.com/a/6169.html

(0)
小哆啦的头像小哆啦
上一篇 2022年6月13日 11:27
下一篇 2022年6月21日 20:44

相关推荐

发表回复

登录后才能评论