Rastgele Resim seçici PHP

3 Cevap
$images = array();
$images[0][0] = "boxes/blue.jpg";
$images[0][1] = "blah.html";
$images[1][0] = "boxes/green.jpg";
$images[1][1] = "blah.html";
$images[2][0] = "boxes/orange.jpg";
$images[2][1] = "blah.html";
$images[3][0] = "boxes/pink.jpg";
$images[3][1] = "blah.html";
$images[4][0] = "boxes/purple.jpg";
$images[4][1] = "blah.html";
$images[5][0] = "boxes/red.jpg";
$images[5][1] = "blah.html";
$images[6][0] = "boxes/yellow.jpg";
$images[6][1] = "blah.html";

$i = 0;


*echo "<a href='" . $images[0][1] . "'><img src='" . $images[0][0] . "' /></a>";

$boxes = array();
while($i<5)
{
	$rand = rand(0,(sizeof($images)-1));
	//echo $rand;
	$slice = array_splice($images, $rand);
	$boxes[$i] = $slice;
	$i++;
}*

Ben $ görüntüleri dizisi tarafından sağlanan görüntülerin bir listeden seçmek için rastgele bir resim seçici almaya çalışıyorum. Ancak, ben "Array" dışında başka bir şey ile $ kutuları dizi doldurmak için kuramıyorum. Neden kimse bana söyleyebilir misiniz? Herhangi bir yardım çok takdir

GÜNCELLEME

Şimdi aşağıdaki kodu kullanıyorum ve boş bir öğe karşısında geldiğinde kırıyor. I çok yanlış sürece, böyle delikleri yamamak kesikler olmamalıdır?

$rand = rand(0,(sizeof($images)));
array_splice($images, $rand);
$i = 0;
while($i<5)
{
	echo "<a href='" . $images[$i][1] . "'><img src='" . $images[$i][0] . "' /></a>";
	$i++;
}

3 Cevap

Biraz konu dışı, ama sadece bir eleman almak ve özgün diziden atın ve daha sonra orijinali kullanmak (6 listesinden 5 ürün toplayıp) bu durumda daha kolay olmaz mıydı? Bu da sonuçta dizide çiftleri alamadım sağlayacaktır.

Ben orijinal fazla 6 öğe olabilir fark, ve ondan daha az 5 isteyebilirsiniz, ama ben örnek yayınlanmıştır hakkında özel bahsediyorum.

Bu bunu yapmanın güzel bir yolu olabilir:

foreach (array_rand($images, 5) as $key) {
    $boxes[] = $images[$key];
}

array_splice() bir dizi döndürür.

Sen böyle bir şey deneyebilirsiniz:

while($i<5)
{
        $rand = rand(0,(sizeof($images)-1));
        $boxes[$i] = $images[$rand];
        $i++;
}