Yazdır 12 Nisan 2010 Pazartesi (Hit: 21054)

Dizi Fonksiyonları

  • count()
  • in_array()
  • array_search()
  • sort()
  • rsort()
  • asort()
  • arsort()
  • array_merge()
  • array_keys()
  • array_push()

1) count($dizi)

Dizinin eleman sayısını verir. Bu fonksiyondan dönen değeri başka bir fonksiyona yada değişkene atamak gerekir. Aşağıdaki örneği inceleyiniz.

<?php
$takim=array("Esra","Gülizar","Büşra","Cangül","Ebru","Seda");
echo "Takımdaki kişi sayısı: ",count($takim);
// ekrana Takımdaki kişi sayısı: 6 yazar
?>

 

Örnek: Dizideki sayıların ortalamasını bulalım.

<?php
$sayilar=array(3,12,17,4,24);
$toplam=0;
for ($i=0;$i<=count($sayilar)-1;$i++)
   $toplam+=$sayilar[$i];
$ortalama=$toplam/count($sayilar);
echo "Ortalama=",$ortalama; // Ortalama=12
?>

 

2) in_array($deger, $dizi)

Bir değerin dizide olup olmadığını bulur. Varsa true, yoksa false değerini döndürür.

<?php
$guzergah=array("İstanbul","Kocaeli","Sakarya","Düzce","Bolu","Ankara");
$varmi=in_array("Bolu",$guzergah);
if($varmi)
   echo "Ankara'ya giderken Bolu'dan geçilir.";
else
   echo "Ankara istikametinde Bolu yoktur.";
?>

 

Örnek: 1 ile 20 arasında birbirinden farklı rastgele 5 sayıdan oluşan bir dizi üretelim.

<?php
$sayilar=array();

for($i=1;$i<=5;$i++){
   do{
      $sayi=rand(1,20);
   }while(in_array($sayi,$sayilar)==true);
   $sayilar[]=$sayi;
}

foreach($sayilar as $deger)
   echo $deger." ";
?>

 

3) array_search($deger, $dizi)

Belirtilen değeri dizide arar. Bulursa değerin indisini gönderir. Yoksa false döner.

<?php
$kadro=array("Patron"=>"Ali","Müdür"=>"Emin","Müd. Yrd."=>"Kaan","Hizmetli"=>"Emre");
$adi="Emin";
$varmi=array_search($adi,$kadro);
if($varmi)
   echo "Adı: ".$adi."<br>Konumu: ".$varmi;
else
   echo $adi." kadroda yoktur";
?>

 

4) sort($dizi)

Verilen diziyi sıralar. İndisler sıralanmayacağından sıralama sonucu, indislere karşılık gelen degerler değişir.

<?php
$meyveler=array("elma","ayva","portakal","mandalina","muz");
foreach($meyveler as $indis=>$deger)
   echo $indis."=>".$deger."<br>";

echo "<hr>";

sort($meyveler);
foreach($meyveler as $indis=>$deger)
   echo $indis."=>".$deger."<br>";
?>


 

Örnek: Sayı bulunan bir diziyi sıralayalım.

<?php
$sayilar=array(34,65,12,45,124,656,2,3446,3);
foreach($sayilar as $indis=>$deger)
   echo $indis."=>".$deger."<br>";

echo "<hr>";

sort($sayilar);
foreach($sayilar as $indis=>$deger)
   echo $indis."=>".$deger."<br>";
?>

 

5) rsort($dizi)

Diziyi tersten (reverse) sıralamak için kullanılır. sort() fonksiyonu diziyi A..Z şeklinde sıralarken, rsort() Z..A şeklinde sıralar. Yine burada da indisler sıralanmayacağında indislere karşılık gelen değerler değişecektir.

<?php
$meyveler=array("elma","ayva","portakal","mandalina","muz");
print_r($meyveler); // print_r dizileri indisleriyle beraber ekrana yazar.
echo "<hr>";

rsort($meyveler);
print_r($meyveler);
?>


Örnek:

<?php
$sayilar=array(34,65,12,45,124,656,2,3446,3);
print_r($sayilar); // print_r dizileri indisleriyle beraber ekrana yazar.

echo "<hr>";

rsort($sayilar);
print_r($sayilar);
?>

 

6) asort($dizi)

Dizideki değerleri artan bir şekilde sıralar. Sıralama sonucunda orijinal indisler korunur. Yani sıralamadan önceki değerlerin indisleri ile sıralamadan sonraki değerlerin indisleri aynı olur. Değerlerle beraber indisler de yer değiştirir. Unutmayın ki sıralama değere göre yapılır.

<?php
$hayvanat=array("deve","köpek","ceylan","aslan","zebra");
print_r($hayvanat); // sıralamadan önceki indislere dikkat ediniz.
// [0]=>deve [1]=>köpek [2]=>ceylan [3]=>aslan [4]=>zebra

echo "<hr>";
asort($hayvanat);
print_r($hayvanat); // sıralamadan sonraki indislere dikkat!
// [3]=>aslan [2]=>ceylan [0]=>deve [1]=>köpek [4]=>zebra
?>

 

Örnek: Öğrenci numaralarına göre verilen notları sıralayalım.

<?php
$geometri=array(165=>45,850=>32,141=>74,295=>95,208=>51,302=>17);
print_r($geometri);

echo "<hr>";
asort($geometri);
print_r($geometri);
// [302]=>17 [850]=>32 [165]=>45 [208]=>51 [141]=>74 [295]=>95
?>

Bu örnekte öğrencilerin notları küçükten büyüğe doğru sıralanırken indis olarak kullanılan öğrenci numaraları da aynı değeri işaret ederek notların karışması önlenmiş oluyor.

 

7) arsort($dizi)

Bu fonksiyon dizi değerlerini azalan sıralamaktadır. Sıralama sonucunda asort() fonksiyonunda olduğu gibi orijinal indisler korunmaktadır. Sıralamdan önceki indislerin işaret ettiği değerler ile sıralamadan sonradaki işarete ettiği değerler aynıdır. Yani değerlerle beraber indisler de yer değiştirir.

<?php
$secenekler=array("a"=>"RAM","b"=>"USB Disk","c"=>"Harddisk","d"=>"L1 Cache");
arsort($secenekler);
print_r($secenekler);
// [b]=>USB Disk [a]=>RAM [d]=>L1 Cache [c]=>Harddisk
// sıralama sonrası değerlerin azalan sıralandığına dikkat ediniz.
// Aynı zamanda indislerin korunduğuna da dikkat ediniz.
?>

 

8) array_merge($dizi1,$dizi2,$dizi3,...)

İki veya daha fazla diziyi birleştirerek tek bir dizi oluşturur. Bu fonksiyondan geriye birleştirilmiş bir dizi döner. Dolayısıyla dönen değeri bir başka değişkene atamamız gerekmetedir. Aşağıdaki örneği inceleyiniz.

Örneğimizde farklı sınıflardan seçilen öğrenciler ile oluşturulan bir basketbol takımının öğrencilerini saklayan bir dizi oluşturmaya çalışacağız.

<?php
$bilisim10a=array("emre","kaan","hüseyin");
$bilisim10b=array("hasan","mehmet");
$anadolubilisim=array("can","mert","raşit");
$basketboltakimi=array_merge($bilisim10a,$bilisim10b,$anadolubilisim);

echo "Okulumuzun Basketbol Takımı<hr>";
foreach($basketboltakimi as $indis=>$deger)
   echo $indis+1,"-",$deger,"<br>";
?>

 

Örnek: Rasgele üretilmiş birbirinden faklı sayılardan oluşan 3 faklı diziyi tek bir dizide birleştirelim. Bunları üç farklı başlık altında seçilmiş olan farklı sorular olduğunu düşünebilirsiniz. Bu soruları birleştirerek bir sınav hazırlandığını da düşünebilirsiniz.

<?php
function sec($min,$mak,$adet){
   $secim=array();
   for ($i=1;$i<=$adet;$i++){
      while(in_array($sayi=rand($min,$mak),$secim))
         $sayi=rand($min,$mak);
      $secim[]=$sayi;
   }
   return $secim;
}

function yaz($dizi,$baslik){
   echo $baslik,": ";
   foreach($dizi as $deger)
      echo $deger," ";
   echo "<br>";
}

$mat=sec(1,100,15);
$geo=sec(101,200,5);
$tur=sec(201,300,20);

yaz($mat,"Matematik");
yaz($geo,"Geometri");
yaz($tur,"Türkçe");

echo "<hr>";
$sinav=array_merge($mat,$geo,$tur);
sort($sinav);
yaz($sinav,"Sınavda soruları");
?>

 

9) array_keys($dizi)

Dizide kullanılan indisleri bir dizi olarak gönderir. Başka bir ifadeyle dizideki indisleri kullanarak bir dizi oluşturur ve gönderir.

Örneğimizde Takıma seçilen öğrencilerin numaralarını alıp ekrana yazalım.

<?php
$takim=array(165=>"Can",84=>"Onur",98=>"Aziz",174=>"Şaban",61=>"Harun");
$ogrenciler=array_keys($takim); // dizinin indislerinden bir dizi oluşturuluyor

echo "Takıma seçilen öğrencilerin numaraları: ";
foreach($ogrenciler as $deger)
   echo $deger," ";
?>

 

10) array_push($dizi,$deger1,$deger2,$deger3...)

Belirtilen dizinin sonuna bir veya daha fazla değer eklemek için kullanılır. Örneğimizde yolcu listesine 3 kişi daha ekleyelim.

<?php
$yolcu_listesi=array("Elif","Sena","Ufuk","Sercan","Merve");
echo "<u>Eski Yolcu Listesi</u>:<br>";
foreach($yolcu_listesi as $deger)
   echo $deger,"<br>";

echo "<hr>";
array_push($yolcu_listesi,"Serkan","Duygu","Haşim");
echo "<u>Yeni Yolcu Listesi</u>:<br>";
foreach($yolcu_listesi as $deger)
   echo $deger,"<br>";
?>

Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache PHP MySQL PhpMyAdmin EasyPHP Xampp AppServ Wamp W3School

www.phpdefteri.com © 2010