代码之家  ›  专栏  ›  技术社区  › 

随机播放和数组随机播放的php差异

php
  •  8
  •  · 技术社区  · 16 年前

    两者到底有什么区别 shuffle array_rand PHP中的函数?如果没有区别的话,速度会更快。

    谢谢

    6 回复  |  直到 16 年前
        1
  •  8
  •   Script47    7 年前

    在数组上调用时, shuffle 随机化数组中所有元素的顺序 .

    例如,代码的以下部分:

    $arr = array(1, 2, 3, 4, 5);
    shuffle($arr);
    var_dump($arr);
    

    可以给出这个输出:

    array
      0 => int 3
      1 => int 1
      2 => int 5
      3 => int 4
      4 => int 2
    

    整个数组本身被修改。


    在数组上调用时, array_rand 从该数组中返回一个或多个随机选择的键 .

    例如,代码的以下部分:

    $arr = array(1, 2, 3, 4, 5);
    $randomly_selected = array_rand($arr, 3);
    var_dump($randomly_selected);
    

    可以给出一种输出:

    array
      0 => int 0
      1 => int 2
      2 => int 3
    

    将返回初始数组的子数组——并且不会修改初始数组。

        2
  •  4
  •   Jacob Relkin    16 年前

    shuffle 以随机顺序重新排序数组。 这个函数引用一个数组,因为它正在改变数组的内部结构,而不仅仅是访问它 ,同时 array_rand 只返回数组中的随机索引。

        3
  •  2
  •   trante    13 年前

    通过改变 不$ 参数我尝试按照代码片段测试这两个函数的性能。即使在大型阵列中,也没有什么不同。大部分时间在1×10之间 - 5 秒和5x10 - 5

    $time_start = microtime(true);
    $rand_keys = array_rand($myArray, $no);
    echo (microtime(true)-$time_start)."\n";
    
    $time_start = microtime(true);
    shuffle($myArray);
    echo (microtime(true)-$time_start)."\n";
    
        4
  •  1
  •   eyelidlessness    16 年前

    shuffle 更改数组元素的顺序。这是一个排序功能。

    array_rand 收益率 n (参数[1],默认为1)数组中的随机元素。它返回一个键(对于参数[1]==1)或一个键数组(对于参数[1]>1),该数组引用数组的元素(参数[0])。

        5
  •  1
  •   Mitch Wheat    16 年前

    Shuffle() 获取整个数组并随机化元素在其中的位置。[注意:在早期版本的PHP中,shuffle()算法非常差]

    array_rand() 获取一个数组并返回一个或多个随机选择的条目。array_rand()的优点是它保持原始数组的完整性。

        6
  •  1
  •   Boaz    13 年前

    shuffle 影响数组键并通过引用使用其参数。 洗牌 以前在旧版本的PHP中,随机化很弱,但现在不再是这样了。

    array_rand 保留原始数组的完整性,并有一个可选参数,允许您选择要返回的元素数。

    推荐文章