将x个随机值从一个数组复制到另一个PHP

时间:2016-06-07 22:48:35

标签: php arrays for-loop random

我正在尝试使用以下代码将5个随机值从一个数组复制到另一个数组。问题是3或4个值被复制,1或2总是被复制为null。我不确定代码中的问题是什么。

if (count($potential_matches_in_area) >= 5) {
  for ($x = 0; $x < 5; $x++) {

  $index = mt_rand(0, count($potential_matches_in_area) - 1);
  $new_matches[$x] = $potential_matches_in_area[$index];
  unset($potential_matches_in_area[$index]);

  } 

1 个答案:

答案 0 :(得分:1)

问题是,这一行:

mt_rand(0, count($potential_matches_in_area) - 1);

你可以获得重复的密钥,第一次运行时运行正常,但是一旦再次出现未设置的密钥,你将得到一个未定义的索引。为什么不直接使用array_rand

if (count($potential_matches_in_area) >= 5) {
    for ($x = 0; $x < 5; $x++) {
        $index = array_rand($potential_matches_in_area);
        $new_matches[$x] = $potential_matches_in_area[$index];
        unset($potential_matches_in_area[$index]);
    } 
}

您只能获得仍然可用的当前密钥。