我正在尝试使用以下代码将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]);
}
答案 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]);
}
}
您只能获得仍然可用的当前密钥。