[ Dica PHP ] Imagens aleatórias em PHP

Já pensou em exibir imagens aleatórias em um site no carregar da página?

Existem várias formas de se fazer isto, mas a uma bem simples é criar um array com os nomes da imagem e sortear quem vai aparecer.

Vamos lá.



<?php

/**

 * Script para listar uma imagem aleatóriamente

 */

/**

 * Indexa a lista de imagens

 * a ser sorteada aleatoriamente

 * @var $imagem array

 */

$imagem = array(

    'nome-01.jpg',

    'nome-02.jpg',

    'nome-03.jpg',

    'nome-04.jpg',

    'nome-05.jpg'

);





/**

 * count() conta a quantidade de chaves no array

 * @var $totalImagens int

 */

$totalImagens = count( $imagem );





/**

 * mt_rand() sorteia um numero

 * entre 1 e o total de imagens no array

 * @var $numeroRandomico int

 */

$numeroRandomico = mt_rand( 1, $totalImagens );





/**

 * Exibição Teste

 */

printf(

    '<img src="%s" />',

    $imagem[ ( $numeroRandomico - 1 ) );





/**

 * Fim do script

 */

4 comentários sobre “[ Dica PHP ] Imagens aleatórias em PHP”

  1. Ol?, S?rgio Mandrake!
    haha te conhe?o garoto!
    Bom seguinte cara:
    A forma que voc? vai usar para sortear um array em PHP pode ser obtida de v?rias formas, ? claro!
    No entanto, estamos considerando ali apenas 5 imagens.
    J? pensou se fossem 1000?
    Ah, mas qual o louco que faria isto?
    Acho que ninguem… s? citei as mil, para lembrar, que antes de qualquer coisa, temos que pensar no tempo de execu??o de um script quando outras 1000 opera??es podem estar acontecendo em paralelo.
    Os c?lculos matem?ticos do PHP s?o mais r?pidos do que outros nativos em fun??es de Strings, Arrays e etc.
    Logo, uma simple implementa??o de mt_rand deixa a aplica??o mais r?pida quando rodando um site critico, considerando a performance de mem?ria ram do servidor e e talz, muita coisa simples pode prejudicar quando tiverem 25 p?ginas com este c?digo sendo chamada.

    Veja o que est? escrito na documenta??o do PHP para mt_rand: http://br3.php.net/manual/pt_BR/function.mt-rand.php

    mt_rand ? Gerador melhorado de n?meros aleat?rios

    Muitos geradores de n?meros aleat?rios das libcs antigas s?o duvidosos ou com caracter?sticas duvidosas e lentos. Por default, o PHP utiliza o gerador de n?meros aleat?rios da libc para a fun??o rand(). A fun??o mt_rand() ? um bom substituto para a primeira. Ela utiliza um gerador de n?meros aleat?rios com caracter?sticas conhecidas, o ? Mersenne Twister, que produzir? n?meros rand?micos quatro vezes mais r?pido que m?dia provida pela rand() da libc.

    Shuffle usa este motor da libc, e ? por isto que usei mt_rand!

    Abra?os!

  2. To ligado, uso mt_rand pra v?rios c?lculos tb, ex: senha aleat?ria, mas no caso ali shuffle j? basta, j? que est? usando array, pq n?o usar fun??es para o mesmo, mas no caso de ser 1000 ou 5000, a? j? opto por usar o banco de dados com ORDER BY RAND(), que por vez ? uma fun??o matem?tica, e logo um LIMIT 5, para limitar, outro detalhe ? que o banco de dados j? tem a fun??o de ter alta performance, da? ? s? alegria =D

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *