PHP返回随机数组
我正在尝试从一个现有的数组中创建一个新数组,该数组的记录数为2到10之间的随机数,到目前为止我已经有了这个数组PHP返回随机数组,php,arrays,Php,Arrays,我正在尝试从一个现有的数组中创建一个新数组,该数组的记录数为2到10之间的随机数,到目前为止我已经有了这个数组 //Select a random number $random_number = (rand(2,10)); // Setup an array of names $names = array("john", "joe", "simon", "peter", "paul"); // Create new array $random_field_names = array_rand
//Select a random number
$random_number = (rand(2,10));
// Setup an array of names
$names = array("john", "joe", "simon", "peter", "paul");
// Create new array
$random_field_names = array_rand($names, $random_number);
print_r($random_field_names);
这给了我一个如下所示的数组
Array
(
[0] => 0
[1] => 10
[2] => 11
)
我哪里做错了
rand(2,10)
不会在所有情况下都起作用,因为数组中只有5个条目;从PHP文档中:尝试拾取多于数组中的元素将导致E_警告级别错误,并返回NULLrand(2,10)
不会在所有情况下都起作用,因为数组中只有5个条目;从PHP文档:尝试拾取多于数组中的元素将导致E_警告级别错误,并返回NULL如果要随机化整个数组,请使用。使用键获取所需的值:
//Select a random number
$random_number = (rand(2,10));
// Setup an array of names
$names = array("john", "joe", "simon", "peter", "paul");
// Create new array
$random_field_names = array_rand($names, $random_number);
print_r($names[$random_field_names]);
使用键获取所需的值:
//Select a random number
$random_number = (rand(2,10));
// Setup an array of names
$names = array("john", "joe", "simon", "peter", "paul");
// Create new array
$random_field_names = array_rand($names, $random_number);
print_r($names[$random_field_names]);
对的描述解释了为什么您没有得到这些名称(我强调为粗体):
从数组中选择一个或多个随机项,并返回随机项的键
你似乎想要这些价值观。你可以这样做:
array_intersect_key($names, array_flip(array_rand($names, $random_number)));
还要确保随机数不大于数组大小:
$random_number = rand(2,5);
$names = array("john", "joe", "simon", "peter", "paul");
$result = array_intersect_key($names, array_flip(array_rand($names, $random_number)));
print_r ($result);
请注意,结果将保留原始关键点。如果要对键重新编号以获得索引为0的索引数组,请将array\u值
应用于结果:
$result = array_values(array_intersect_key($names, array_flip(array_rand($names, $random_number))));
对的描述解释了为什么您没有得到这些名称(我强调为粗体):
从数组中选择一个或多个随机项,并返回随机项的键
你似乎想要这些价值观。你可以这样做:
array_intersect_key($names, array_flip(array_rand($names, $random_number)));
还要确保随机数不大于数组大小:
$random_number = rand(2,5);
$names = array("john", "joe", "simon", "peter", "paul");
$result = array_intersect_key($names, array_flip(array_rand($names, $random_number)));
print_r ($result);
请注意,结果将保留原始关键点。如果要对键重新编号以获得索引为0的索引数组,请将array\u值
应用于结果:
$result = array_values(array_intersect_key($names, array_flip(array_rand($names, $random_number))));
您能否添加一个示例,说明您想要的输出是什么?我有点搞不懂你想做什么。你能举例说明你想要的输出是什么吗?我对您试图执行的操作有点困惑。当我尝试使用$result[1]从新数组中提取项目时,我没有得到任何结果,这是否与新数组的构造方式有关?事实上,结果数组保留了原始键。请参阅对我答案的补充。非常感谢,现在更有意义了。当我尝试使用$result[1]从新数组中提取项目时,我没有得到任何结果,这与新数组的构造方式有关吗?事实上,结果数组保留了原始键。请看我的补充答案。非常感谢,现在更有意义了