2017-11-20 17 views
2

アップロードした画像をディレクトリから取得し、その順番をシャッフルしようとしています。私はイメージを取得し、それらを順番に表示することができますが、それらをシャッフルさせるように見えません!PHPのディレクトリから画像をシャッフルして表示する

<?php 
    $imagesDir = 'uploads/'; 
    $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); 
    $randomImage = $images[array_rand($images)]; 
?> 

<div id="images"> 
     <?php 
      $print_r($images); 
      $shuffleimages = shuffle($images); 
      foreach($shuffleimages as $shuffleimage) { 
       echo '<img src="'.$shuffleimage.'" />'; 
      } 
     ?> 
</div> 

私は$imagesを印刷するとき、私は得る:

Array (

[0] => uploads/image1.jpg 

[1] => uploads/image2.jpg 

[2] => uploads/image3.jpg 

[3] => uploads/image4.jpg 

[4] => uploads/image5.jpg 

) 

それはglob関数とは何かですかどのように私はより一般的に画像を検索していた場合、私は知らないのですか?私はSOに関する他の質問を見てきましたが、私が違ったことや間違っていることを見ることができませんでした!あなたはあまりにも遠くに一歩を行っている

+1

PHPの['shuffle()'](http://php.net/manual/en/function.shuffle.php)はブール値を返します。したがって、あなたの場合、 '$ shuffleimages'はシャッフルされた配列ではなく' true'か 'false'です。また、シャッフルの前後に '$ images'をどこに印刷していますか? – showdev

+0

ありがとう! &apologies(再印刷)、それは不明だった - シャッフルの前にそれを印刷した今質問を編集します –

+0

Gotcha大丈夫。ええ、シャッフルはうまくいきます。シャッフルの前に元の配列を出力してから、シャッフルされた配列ではなくブール値をループすることを試みているだけです。ザクはそれを働かせました。 – showdev

答えて

4

... $imagesを再割り当てする必要はありません...あなたの$shuffleimagesはあなたがまたsacndirを使用してsorting_orderを使用することができtrueまたはfalse

<?php 
     shuffle($images); // $images will be shuffled. 
     foreach($images as $shuffleimage) { 
      echo '<img src="'.$shuffleimage.'" />'; 
     } 
    ?> 
+0

ありがとう、本当にそれをクリアする - 私はそれが戻ったものが不明で、返されたものを見つける方法を考え出すことができなかった!私は実際にはページの後ろに順番に画像を表示したいのですが(この部分は質問から外しました)、 '$ images'配列をそのまま維持しようとしていました。問題を解決するために、 '$ shuffleImages = glob($ imagesDir。 '*。{jpg、jpeg、png、gif}'、GLOB_BRACE);' '$ images'と'それからシャッフルする。しかし、コードのこのセクションですべてのことを行うより良い方法を考えることができるかどうか疑問に思っていましたか? –

+2

@JackClarke 'glob()'を2回使用するのではなく、次のようにします: '$ shuffleImages = $ images; shuffle($ shuffleImages); ' – showdev

+0

@showdev - それを入れて、それは完全に動作します - ありがとう!これはなぜ好きなのですか(主に好奇心から)? 'glob()'を2回使うのはなぜですか? –

0

のブール値を返します。パラメータをソートしてシャッフルします。

+0

'SCANDIR_SORT_RANDOM'という値があればきれいです。 – showdev

+1

確かに、私はあなたが「ランダムソート」と呼ばれるものの背後にある論理を理解することができませんでした。私たちの世界ではランダムソートはありません。ソートはランダム化の逆です。 @showdev – SaidbakR

+2

Hehe興味深い点。 [xkcd](https://imgs.xkcd.com/comics/random_number.png)。 – showdev

関連する問題