2016-03-27 7 views
0

PHP経由でフォルダからWebページの背景画像をランダムに設定しようとしています。phpフォルダからランダムに背景画像を設定する

私は次のコードを持っている:

<!DOCTYPE HTML> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="style.css"> 
     <title>404</title> 
    </head> 

    <body id="Background404"> 
     <p>404-Page not found. <a href="http://url.com>Home.</a></p> 
    <?php 
     $dir = '/var/www/html/Images'; 
     $fileNames = array(); 
     if(is_dir($dir)){ 
      $handle = opendir($dir); 
      while(false !== ($file = readdir($handle))){ 
       if(is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){ 
       $fileNames[] = $file; 
       } 
      } 
      closedir($handle); 
      $fileNames = array_reverse($fileNames); 
      print_r($fileNames); 
     } 
     $totalLength = sizeof($fileNames); 
     $randInt = rand(0, $totalLength); 
     $randFile = $fileNames[$randInt]; 
     echo '<style> #Background404{background: url($randFile);}</style>'; 

    ?> 

    </body> 
</html> 

注:ファイルの印刷はちょうど私がコードでそのポイントに到達すると、ファイルが呼ばれているかを確認することを確実にするためです。私は同様の質問をここに見つけました:Random Background Image PHPしかし、私はその答えを使用したとき、私はちょうど純粋な白い背景を持っています。

Array ( 
     [0] => GraniteBridge.png 
     [1] => mobileBackground.png 
     [2] => OtherKingdom.png 
     [3] => NetherBase.png 
     [4] => BackgroundTablet.png 
     [5] => Snowy.png 
     [6] => Village.png 
     [7] => background2.png 
     [8] => CactusFarm.png 
     [9] => FrontView.png 
     [10] => CreditsPortal.png 
     [11] => FrontNight.png 
     [12] => background4.png 
     [13] => XPFarmRailway.png 
     [14] => GoldIronFarms.png 
     [15] => Pyramid.png 
     [16] => NetherFortress.png 
     [17] => TheEnd.png 
     [18] => Library.png 
     [19] => Background.png 
     [20] => twitter.png 
     [21] => mobileBackground1.png 
     [22] => mobileBackground2.png 
     [23] => BirdsEyeView.png 
     [24] => EndPortal.png 
     [25] => AboveVillage.png 
     [26] => TowerToTheHeavens.png 
     [27] => TowerArmorStands.png 
     [28] => FullSizeBackground.png 
     [29] => Mansion.png 
     [30] => Night.png 
     [31] => Dojo.png 
) 

答えて

1

我々は、配列内の要素は、それらの配列のキーで昇順に並べられていることがわかります。ここでは

は、印刷された配列のコピーです。この情報を使用して、ランダム配列要素を取得するための適切なアプローチを作成することができます。

そんなに配列の数をつかむために持っているまず第一に:

$count = count($fileNames); 

それからちょうど0から配列の数に乱数を生成するのrand()関数を使用します。

$random = rand(0, $count); 

今すぐあなたはそれを使用することができますランダムな配列キーを持っています:

+0

私はmisstakeを行ったし、変数を後で使用するためにomの値に変更します。 – Marcin

+0

これを試してみましたが、イメージ要素が表示されましたが、イメージは見つかりませんでした。イメージアドレスをコピーすると、 "http://96.19.31.19/var/www/html/Images/$fileNames [%3C?= $ random?%3E] "これは、htmlで使用するプレーンテキストにPHPを切り替えるのではない – kalenpw

関連する問題