2016-03-02 125 views
-1

如果指定的条目数与数组中的项数相同,则返回随机数组键的问题。array_rand返回相同的值

$rdm = array_rand($similar_product_array, 4); 

如果数组中有4个项目,将总是返回键值0,1,2,3。

例如:

// Items in array 
array (size=4) 
    0 => string 'Batman Heroes Edition Nendoroid' (length=31) 
    1 => string 'Oberyn' (length=6) 
    2 => string 'White Walker' (length=12) 
    3 => string 'Avengers Age of Ultron Hulk' (length=27) 

// "randomly" generated array keys is always 0 , 1, 2, 3 
array (size=4) 
    0 => int 0 
    1 => int 1 
    2 => int 2 
    3 => int 3 

然而,如果我有:

$rdm = array_rand($similar_product_array, 3); 

// Returns randomly as expected 
array (size=3) 
    0 => int 0 
    1 => int 2 
    2 => int 3 

它会返回随机生成的密钥,它应。

我在这里做错了什么?

回答

5

你误解了array_rand()函数的用途,它应该给你从数组中随机输入,但是不是随机的顺序。这意味着如果你要求4个数组中的4个随机项目,它将始终返回所有项目(按原始顺序)。

如果你只需要以这种方式随意改变阵列中的条目顺序,使用shuffle()功能,例如:

$array_copy = $array; 
shuffle($array_copy); 
$rdm = array_rand($array_copy, <how_many_you_need>); 
+0

啊,我现在明白了。谢谢。我会尽快接受你的回答。 – user3796133