Php 返回相同值的数组

Php 返回相同值的数组,php,Php,如果指定的条目数与数组中的项数相同,则返回随机数组键时出现问题 $rdm = array_rand($similar_product_array, 4); 如果数组中有4项,则将始终返回键值0、1、2、3 $rdm = array_rand($similar_product_array, 4); 例如: // Items in array array (size=4) 0 => string 'Batman Heroes Edition Nendoroid' (length=31)

如果指定的条目数与数组中的项数相同,则返回随机数组键时出现问题

$rdm = array_rand($similar_product_array, 4);
如果数组中有4项,则将始终返回键值0、1、2、3

$rdm = array_rand($similar_product_array, 4);
例如:

// 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
它将返回随机生成的密钥


我在这里做错了什么?

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

如果只需要随机更改数组项的顺序,请使用函数,例如:

$array_copy = $array;
shuffle($array_copy);
$rdm = array_rand($array_copy, <how_many_you_need>);
$array\u copy=$array;
洗牌($array\u copy);
$rdm=array\u rand($array\u copy,);

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

如果只需要随机更改数组项的顺序,请使用函数,例如:

$array_copy = $array;
shuffle($array_copy);
$rdm = array_rand($array_copy, <how_many_you_need>);
$array\u copy=$array;
洗牌($array\u copy);
$rdm=array\u rand($array\u copy,);

啊,我现在明白了。非常感谢。我会尽快接受你的回答。啊,我现在明白了。非常感谢。我会尽快接受你的答复。