通过某个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 )

可以看到,使用同样的key打乱出来的顺序始终都是相同的,更换不同的key才会改变打乱的顺序。
原创文章,作者:小哆啦,如若转载,请注明出处:https://www.notevm.com/a/6169.html