PHP Dersleri

PHP İle Diziden Rastgele Dosya Alma

Bu dersimizde, php ile diziden rastgele dosya alma işleminin nasıl olacağından bahsedeceğim. Bu işlem için bir fonksiyon oluşturacağız. Bu fonksiyonda belirlenen diziyi tarayıp, içerisinde yer alan dosyaları rastgele ve belirlenen oranda çıktı olarak verilmesini sağlayacağız.

Hangi Fonksiyonlardan Yararlanacağız?

Bu işlemi gerçekleştirmek için; opendir(), readdir(), array_push(), count(), array_rand() fonksiyonlarını kullanacağız. Bu fonksiyonların gerçekleştirdikleri işlere aşağıdan ulaşabilirsiniz.

Opendir()Belirtilen dizin için bir tanıtıcı döndürür.
Readdir()Dizinden bir girdinin ismini okur.
array_push()Belli sayıda elemanı dizinin sonuna ekler.
Count()Bir dizideki eleman sayısını veya bir nesnedeki özellik sayısını döndürür.
array_rand()Bir diziden belli sayıda rasgele eleman döndürür.

Yukarıdaki tabloda kullanacağımız fonksiyonlara ilişkin açıklamalar yer almaktadır. Bu işlemi gerçekleştirmek için adım adım ilerleyerek, dizideki verileri belirli oranda rastgele bir şekilde listelemiş olalım.

<?php
function rastgeleIcerik($dizin, $sinir = null){
   ## dizine bağlandık.
   $dizin         = opendir($dizin);
   ## dosyaları tutmak için dizin oluşturduk.
   $dosyaAdlari   = array();
   ## Dizini listeliyoruz ve $dosyaAdlari değişkenine ekliyoruz.
   while($dosya = readdir($dizin)){
      if ($dosya !== "." && $dosya !== "..") {
         array_push($dosyaAdlari, $dosya);
      }
   }
   ## Adet belirlenmemiş yada fazla yazılmışsa olanı gösteriyoruz.
   if ($sinir == null || count($dosyaAdlari) < $sinir) {
      return $dosyaAdlari;
   }else{
      ## Dosya adetini buluyoruz.
      $adet       = count($dosyaAdlari);
      ## Görsel adeti kadar rastgele eleman döndürdük.
      $rastgele   = array_rand($dosyaAdlari, $sinir);
      ## Yeni dizimiz
      $rastgeleDosyalar = array();
      ## Yeni diziye dosyaları attık.
      for ($i=0; $i < $sinir; $i++) {
         array_push($rastgeleDosyalar, $dosyaAdlari[$rastgele[$i]]);
      }
      ## Dosyalar hazır :) Dizi olarak çıktı verecektir.
      return $rastgeleDosyalar;
   }
}
## Çıktı alıyoruz.
$gorseller = rastgeleIcerik("foto", 4);
print_r($gorseller); 

Yukarıdaki örnekte rastgeleIcerik() fonksiyonu yer almaktadır. Bu fonksiyonun ilk parametresinde dizi yolunu, ikinci parametresinde ise listelenecek veri sayısı belirenmektedir.

Belirlenen dizine bağlanılıp, içerisinde yer alan değerler array_push ile bir dizi değişkende tutulmaktadır. Dizi değişkende tutulan değerler, fonksiyonda tanımlanan ikinci parametreye göre filtrelenip çıktı olarak verilmektedir. Tüm açıklamalar kod satırında yer aldığı için detaylı olarak burada açıklama yapma gereği duymuyorum.

Tüm değerler girildiğinde, dizide yer alan dosyalar belirlenen oranda rastgele bir şekilde listelenecektir.

Yukarıda yer alan görseller foto klasöründe bulunmaktadır. Hazırladığımız fonksiyon ile birlikte bu klasör içerisindeki görsellerden dört tanesi rastgele biçimde çıktı olarak verilecektir.

Array ( 
[0] => user-10.jpg 
[1] => user-2.jpg 
[2] => user-5.jpg 
[3] => user-9.jpg
)

Fonksiyon çalıştırıldığında yukarıdaki gibi bir çıktı elde edilecektir. Fonksiyonu her çalıştırdığınızda farklı sonuçlar elde etmiş olacaksınız.

Geliştirmek İsteyenlere

Bu fonksiyonu geliştirip farklı işlemler yapmak isteyenler, aşağıdaki fikirler yoluyla değişik içerikler üretebilirler.

  • Listeleme işlemi, dizide bulunan tüm dosyalar içinde yapılacaktır. Bunu farklı bir yolla sadece belirttiğiniz dosya türlerinin listelenmesi ve rastgele getirilmesi için filtreler uygulayabilirsiniz.
  • Güvenlik kodu uygulaması gibi uygulamalar geliştirmek için farklı görselleri çekip doğrulama yapabilirsiniz. Örneğin A’dan Z’ye harfleri farklı çıktılar ile hazırladıkan sonra rastgele harfler çekerek bu harfleri yazarak güvenlik önlemi alabilirsiniz.
Daha Fazla Göster

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Kapalı