2016-12-19 125 views
2
$sql = "SELECT * from banner ORDER BY RAND() limit 6"; 
$x=1; 

while($result =mysql_fetch_assoc($banner_arr)) 
{ 
    //print_r($result); 
    $response["banner_image_".$x] = //something 
    $x++; 
} 

如果數據庫返回少於6個數據,我想重複響應數組中的數據。假設它返回5個數據,那麼我想要返回具有5個數據的響應數組,並且從數據庫返回的5個數據中隨機選擇一個數據。基本上總共有6個數據。我將如何做到這一點?重複隨機數組元素

+0

你可以重複詢問,直到你有足夠的數據或工會旗幟本身幾次。就我個人而言,我會獲取數據一次,重複,直到有足夠的數據,然後使用Fisher-Yates shuffle隨機化。 – fafl

+0

你能解釋一下如何做到這一點 – Samim

回答

1

試試這個:

$DESIRED_SIZE = 6; 
$sql = "SELECT * FROM banner ORDER BY RAND() LIMIT $DESIRED_SIZE"; 

// TODO read from db, store into $rows array 

$rows = [["1", "banner1"], ["2", "banner2"], ["3", "banner3"], ["4", "banner4"]]; 
$banners = []; 
while (count($banners) < $DESIRED_SIZE) { 
    $banners = array_merge($banners, $rows); 
} 
shuffle($banners); 
$result = array_slice($banners, 0, $DESIRED_SIZE); 
+0

優秀.....作品很棒...謝謝哥們 – Samim