如果指定的条目数与数组中的项数相同,则返回随机数组键时出现问题。
$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
它将返回随机生成的键。
我在这里做错了什么?
答案 0 :(得分:5)
你误解了array_rand()函数的用途,它应该从数组中提供随机条目,但不是随机顺序。这意味着如果你要从4个项目的数组中要求4个随机项目,它将始终返回所有项目(按原始顺序)。
如果您只需要随机更改数组条目的顺序,请使用shuffle()函数,例如以这种方式:
In [24]: %paste
class animal(object):
def do_stuff(self):
return self.yell()
In [25]: %paste
class dog(animal):
def yell(self):
print("yelling")
In [26]: d = dog()
In [27]: d.do_stuff()
yelling