Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luizbr

Limitar o número de imagens a serem exibidas php

Recommended Posts

Olá, este código faz com que as imagens sejam exibidas de forma "aleatória" dentro da página.

<?php
$myImagesList = array (
'image1.png',
'image2.png',
'image3.png',
'image4.png'
);



shuffle ($myImagesList);
foreach ($myImagesList as $displayImagesAtRandomOrder) {
echo '<img src="/imagens/' . $displayImagesAtRandomOrder . '" width="200" height="40" border="0" />';
}
?>
exemplo:
image1.png image3.png image2.png image4.png
F5 reshesh page
image2.png image3.png image4.png image3.png
F5 reshesh page
image1.png image4.png image3.png image2.png
F5 reshesh page
image2.png image3.png image1.png image4.png
Mas como faço para que apenas duas imagens sejam exibidas por vez ?
exemplo:
image1.png image3.png
F5 reshesh page
image3.png image2.png
F5 reshesh page
image2.png image4.png
F5 reshesh page
image3.png image1.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer apenas 2 nem precisa do laço...

 

<?php
$myImagesList = array (
'image1.png',
'image2.png',
'image3.png',
'image4.png'
);






shuffle ($myImagesList);


echo '<img src="/imagens/' . $myImagesList['0'] . '" width="200" height="40" border="0" />';
echo '<img src="/imagens/' . $myImagesList['1'] . '" width="200" height="40" border="0" />';


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você tem que entender como funciona o seu código, depois você vai automaticamente aprender a fazer quaisquer alterações nele.

 

Você tem duas formas de fazer isso. Direi uma a uma a seguir.

 

Primeiro, o seu código só exibe imagens aleatoriamente por causa da função shuffle() que ordena aleatoriamente os elementos de um array. Depois disso, você percorre cada um dos registros do seu array com o laço de repetição foreach().

 

Você pode facilmente substituir essas duas funções por simplesmente o array_rand(); assim:

$myImagesList = array (
'image1.png',
'image2.png',
'image3.png',
'image4.png'
);

echo '<img src="/imagens/' . $myImagesList[array_rand($myImagesList)] . '" width="200" height="40" border="0" />';
echo '<img src="/imagens/' . $myImagesList[array_rand($myImagesList)] . '" width="200" height="40" border="0" />';

Se quiser um código mais eficiente, que não vá exibir imagens repetidas, poderá fazer uma filtragem assim (o código está todo comentado para melhor entendimento):

$myImagesList = array (
'image1.png',
'image2.png',
'image3.png',
'image4.png'
);

$imagens = array(); // Crio um array vazio para colocar as imagens aleatórias
$quantidade = 2; // Defino a quantidade de imagens que será exibida
while($quantidade > 0){ // Inicio um laço de repetição até exibir todas as imagens
	$img = $myImagesList[array_rand($myImagesList)]; // Pego uma imagem aleatória
	if(!in_array($img, $imagens)){ // Verifico se a imagem já está no array.
		$imagens[] = $img; // Se não estiver, adiciono no array que armazena as imagens que serão exibidas, do contrário, descarta a imagem
		$quantidade--; // A cada imagem adicionada, diminuo a quantidade em 1 até zerar. Dessa forma, faço com que seja exibida somente a quantidade de imagens definida anteriormente
	}
}

foreach($imagens as $src){ // Faço um loop dentro do array com as imagens a serem exibidas e imprimo cada uma delas na tela
	echo '<img src="/imagens/'.$src.'" width="200" height="40" border="0" />';
}

Com esse código acima você consegue exibir quantas imagens quiser simplesmente alterando a variável $quantidade e, obvio, colocando mais imagens dentro do array $myImagesList. Vai facilitar sua vida depois caso queira exibir mais ou menos imagens dinamicamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.