2013-01-22 106 views
-2

我有兩個數組,一個包含用戶信息,另一個包含關於不想被選中的第一個數組的用戶的id。我想從第一個不在第二個數組中的數組中插入新數組。PHP array_push導致腳本停止

while (count($new_array) < 50) 
    { 
     $index = array_rand($array_1); 

     if (! in_array($array_1[$index]['id'], $array_2)) 
     { 
      array_push($new_array, $array_1[$index]); 
      array_push($array_2, $array_1[$index]['id']); 
     } 
    } 

當從$ array_1中選擇數據時,我將它們插入到$ array_2中以便不再次被選中。如果while循環的運行時間不超過12次,但運行時間超過30秒會導致腳本停止,這將起作用。 有什麼問題?

+0

爲什麼array_rand()?如果您試圖將數組與數組合並在一起,那麼循環遍歷整個數組通常是一個好主意,而不是隨機選取位並檢查它們是否已經存在。 –

+0

我不想合併數組,我從數組中選取隨機優勝者並將它們保存在另一個數組中。但我不想多次選擇同一個人 –

+0

那麼只需使用array_shuffle()並獲取第一個'n'條目呢?比你的循環+重複檢查簡單得多。 –

回答

0

而不是試圖跟蹤哪個索引已經從array1中隨機選擇,只需從該數組中選擇後從該數組中刪除該項目。如果您需要保持原始數組不變,請先複製它。

+0

它有重複的條目 –

+0

然後重複數據刪除http://php.net/manual/en/function.array-unique.php – clang1234