PHP返回随机数组

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

我正在尝试从一个现有的数组中创建一个新数组,该数组的记录数为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($names, $random_number);

print_r($random_field_names);
这给了我一个如下所示的数组

Array
(
    [0] => 0
    [1] => 10
    [2] => 11
)
我哪里做错了

  • 第5行出现语法错误-simon
  • 返回随机键,而不是值
  • rand(2,10)
    不会在所有情况下都起作用,因为数组中只有5个条目;从PHP文档中:尝试拾取多于数组中的元素将导致E_警告级别错误,并返回NULL
  • 如果要随机化整个数组,请使用

  • 第5行出现语法错误-simon
  • 返回随机键,而不是值
  • rand(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]从新数组中提取项目时,我没有得到任何结果,这与新数组的构造方式有关吗?事实上,结果数组保留了原始键。请看我的补充答案。非常感谢,现在更有意义了