2017-02-23 15 views
0

私はまだPHPに堪能ではありません。私はこれまでのところこのコードを持っています。ディレクトリから画像をランダムに取得しますか?

<?php 
$id = JRequest::getInt('id'); 
$dirname = "media/k2/galleries/{$id}/"; 
$images = glob($dirname."*.jpg"); 
$rand = array_rand($dirname); 
?> 
<?php foreach($images as $image): ?> 

<li><span class="shadowborder"><img src="<?php echo $image ?>" /></span> </li> 
<?php endforeach; ?> 

私は配列を追加しようとしました、私はスワップアウトする必要があります$画像と$画像を知っているが、あなたが見ることができますが、私はゲルにそれを得ることができないように、私は何をしないのですか?ありがとう!

あなたがこれを達成するために array_rand()と提携して「 Glob」関数を使用することができます
+0

。 – Deep

+0

あなたは何をしたいですか?画像をランダムな順序で表示しますか? – apokryfos

+0

はい、ディレクトリ内のすべての画像を取り出し、1つずつランダムに表示します。上記のコードは動作しますが、ファイル名で表示されます。文字どおり、私はランダム関数を追加する必要があります。 – user3206244

答えて

1

あなたはこのためにshuffleを使用することができます:あなたは、あなたがそれらをランダムに取得することができ、すべてを取得し、配列を作成する必要が

$id = JRequest::getInt('id'); 
$dirname = "media/k2/galleries/{$id}/"; 
$images = glob($dirname."*.jpg"); 
shuffle($images); 
?> 
<?php foreach($images as $image): ?> 

<li><span class="shadowborder"><img src="<?php echo $image ?>" /></span> </li> 
<?php endforeach; ?> 
+0

シンプルな、任意の欠点? – user3206244

+0

シャッフルの欠点は、キーが維持されないことだけです。 – apokryfos

+0

しかし、それは同じシャッフルされた順序を使用して続行し、繰り返すか、それともシャッフルし続けるでしょうか? – user3206244

1

<img src=" 
    <?php 
     $id = JRequest::getInt('id'); 
     $imagesDir = 'media/k2/galleries/{$id}/'; 
     $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); 
     $randomImage = $images[array_rand($images)]; 
     echo $randomImage; 
    ?> 
"> 

あなたは(追加/削除)この部分を変更することを経由して「許可」するファイルの種類を変更することができます。
'*.{jpg,jpeg,png,gif}


お気軽にご質問ください。

+0

スタックありがとう!グロブとarray_randの違いと$ imagesのシャッフルの違いは何ですか? – user3206244

+0

私はarray_randの使い方を読んで、アレイインデックスをtactに残し、ランダムに1つのインデックスを選択しますが、shuffleは実際にインデックスを並べ替えて1つを選択します。しかし、確かに乱数は並べ替えられたインデックス上で続きますか? – user3206244

関連する問題