css + shuffle()

Flextone

Erfahrenes Mitglied
Hi,

ich möchte eine css Datei per Zufall aufgreifen lassen.
ich habe folgenden Code, jedoch lädt er immer und ausschließlich 1 (also one.css).

Wie könnte ich das funktionierend bekommen ?

Code:

PHP:
<?php	
	$array = range(1,3);
	$css = shuffle($array);
	
	if($css == "1"){
	$style = "one.css";
	}elseif($css == "2"){
	$style = "two.css";
	}
?>
HTML:
<link href="<?php echo $style; ?>" rel="stylesheet" type="text/css">
 
Machs doch so:

PHP:
<?php
    mt_srand((double)microtime()*1000000);
    $css = mt_rand(1,3);
    
    if ($css == 1)
    {
        $style = "one.css";
    }
    elseif ($css == 2)
    {
        $style = "two.css";
    }
?>
 
Könntest du mir erklären was die Begriffe genau ausagen, die du mir da gezeigt hast ? Dann weiß ich was für die Zukunft.

Danke dir aber soweit.
 
Probier mal Folgendes:
PHP:
<?php

	$css = array(
		'one.css',
		'two.css'
	);
	srand((double)microtime()*1000000);
	echo $css[rand() % count($css)];

?>
 
Ok das erste habe ich bereits getestet und es funktioniert. Das zweite mach ich auch sofort. Kann mir wer denn die neuen Begriffe im Coe erklären und was der unterschied zwischen 1 und 2 ist ?
 
Hallo...
vom Prinzip her machen die Funktionen rand() und mt_rand das gleiche. mt_rand ist ein verbesserter Zufallsgenerator, hier ein kleiner Text von php.net:
Die PHP rand() Funktion benutzt den in der jeweiligen libc enthaltenen Zufallsgenerator. Gerade in älteren libc-Versionen ist dieser aber oft langsam und die Qualität der erzeugten Pseudozufalls-Sequenzen ist unbefriedigend bis unbekannt.

Die Funktion mt_rand() bietet einen Drop-In Ersatz für die von der libc bereitgestellten Funktionen. Sie benutzt einen Zufallsgenerator mit bekannter Charakteristik, den sogenannten "Mersenne Twister", der Pseudozufalls-Sequenzen generiert, die auch kryptografischen Ansprüchen genügen sollten und viermal so schnell arbeitet wie der typische libc-Algorithmus.

Und hier nochmal etwas kommentiert:
PHP:
<?php
    // Initialisieren den Zufallsgenerators (siehe www.php.net/mt_srand)
    mt_srand((double)microtime()*1000000);
    // Erstellen einer Zufallszahl zwischen 1 und 3 (siehe www.php.net/mt_rand)
    $css = mt_rand(1,3);
    
    if ($css == 1)
    {
        $style = "one.css";
    }
    elseif ($css == 2)
    {
        $style = "two.css";
    }
?>
 
http://www.php.net/microtime :-)

Ne, also: Die Funktion gibt einfach den aktuellen zeitwert(UNIX-Timestamp) in Millisekunden zurück. Der Gedanke dahinter ist den Zufallsgenerator bei jedem Aufruf mit einem anderen Wert zu initialisieren um einen "besseren" Zufallswert zu bekommen.
 
Zurück