2016-06-07 193 views
1

我想用下面的代碼將5個隨機值從一個陣列複製到另一個陣列。問題是3或4個值被複制,1或2總是被複製爲null。我不確定我的代碼中存在什麼問題。將x個隨機值從一個陣列複製到另一個陣列PHP

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

的問題是,這條線:

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]); 
    } 
} 

你只會得到現在的鑰匙,它仍然可用。

+0

我讀過array_rand效率較低,並且偶爾會產生一些分發問題,但如果它是唯一的方法,我會使用它 – Alk

+0

@mankee如果你想堅持你的'mt_rand',你將需要使用'mt_rand'來捲起自己的自定義函數,然後對應於你的數組 – Ghost

相關問題