1 (Düzenleyen: yagizcapari, Düzenleme tarihi: 25-02-2017 11:26:22)

Konu: PHP'de diziler

http://www.yilmazarslanturk.com/img/makale/diziler886.png
array() komutu anahtar ve değerden oluşan bir dizi oluşturur. Eğer anahtar belirtilmezse anahtar otomatik olarak atanır ve anahtar değeri 0 dan başlayarak her bir değer için bir artar.

Direk Dizinin Kullanılışı:

<?php
$mevsim1 = "İlkbahar";
$mevsim2 = "Yaz";
$mevsim3 = "Sonbahar";
$mevsim4 = "Kış";
echo "$mevsim1 $mevsim2 $mevsim2 $mevsim4";
/*
Ekran Çıktısı:
İlkbahar
Yaz
Sonbahar
Kış
*/
?>

yukarıdaki yöntem uzun, şimdi de bunu kısa yoldan nasıl ekrana yazdırabilir bunu görelim;

<?php
$mevsim[1]="İlkbahar";
$mevsim[2]="Yaz";
$mevsim[3]="Sonbahar";
$mevsim[4]="Kış";
print_r ($mevsim);
/*
Ekran Çıktısı:
Array ( [1] => İlkbahar [2] => Yaz [3] => Sonbahar [4] => Kış ) 
*/
?>

Bu şekilde dizi elemanlarının eleman sayısı ile birlikte tek satır yazdırma komutu ile ekranda listelenebilir.


Diziye Eleman Eklemek

Var olan bir diziye eleman indeks numarasını yazarak dizi elemanı eklenebilir.

<?
$mevsim[1]="İlkbahar";
$mevsim[2]="Yaz";
$mevsim[3]="Sonbahar";
$mevsim[4]="Kış";
# ek olarak mevsim 5 ve mevsim 6 y ekleyelim
$mevsim[5]="Mevsim 5";
$mevsim[6]="Mevsim 6";
print_r ($mevsim);
print 'mevsim[5]"'.$mevsim[5].!"<br>';
/*
Ekran Çıktısı: 
Array ( [1] => İlkbahar [2] => Yaz [3] => Sonbahar [4] => Kış [5] => Mevsim 5 [6] => Mevsim 6 )
*/
?>

Dizi Elemanını Dizi İçinden Silmek

Dizi elemanlarından birini silmek için unset(); fonksiyonunu kullanabiliriz. Bunun için diziden hangi elemanı sileceğimizi belirtmemiz gerekir.

<?
$mevsim[1]="İlkbahar";
$mevsim[2]="Yaz";
$mevsim[3]="Sonbahar";
$mevsim[4]="Kış";
$mevsim[5]="Mevsim 5";
unset($mevsim[5]);
print_r ($mevsim);
/*
Ekran Çıktısı:
Array ( [1] => İlkbahar [2] => Yaz [3] => Sonbahar [4] => Kış ) 
mevsim 5 gösterilmedi çünkü onu sildik
*/
?>

Array Fonksiyonu İle Dizi Tanımlama

Array dizi tanımlama donksiyonudur. array(“parametre 1″,”parametre 2″,”parametre 2″,…,”parametre N”); Bu şekilde dizi tanımlanır. Bunu bir örnek ile inceleyelim.

<?
$mevsim3 = array("ilkbahar","yaz","sonbahar","kış");
/*
Ekran Çıktısı :
Array([0]=>ilkbahar[1]=>yaz[2]=>sonbahar[3]=>kış)
*/
?>

($mevsim3) değişkenine atadığımız dizi elemanları çıktı ekranındaki gibi ilk eleman değeri sıfırdan başlayarak gösterir.
Tanımladığımız diziden istediğimiz elemanı silmek içinde gene unset(); fonksiyonunu kullanırız.

<?
$mevsim3 = array("ilkbahar","yaz","sonbahar","kış");
unset($mevsim3[3]);
/*
Ekran Çıktısı:
Array([0]=>ilkbahar[1]=>yaz[2]=>sonbahar)
*/
?>

Numerik Olmayan Dizi İndisi Kullanmak

Numerik olmayan yani dizideki elemanların; eleman sayılarının belirtilmemesidir.

 <?
$sene["mevsim"]=("ilkbahar");
$sene[]=("yaz");
$sene[]=("sonabahar");
$sene[]=("kış");
print_r ($sene)
/*
Ekran Çıktısı:
Array ( [mevsim] => ilkbahar [0] => yaz [1] => sonabahar [2] => kış ) 
*/
?>

Eleman numarsı belirtmeyip bir metinsel ifade yazıp bu metne değer atayabiliriz. Aşağıdaki örnekteki gibi;

<?
$sene["mevsim1"]=("ilkbahar");
$sene["mevsim2"]=("yaz");
$sene["mevsim3"]=("sonabahar");
$sene["mevsim4"]=("kış");
print_r ($sene)
/*
Ekran Çıktısı:
Array ( [mevsim1] => ilkbahar [mevsim2] => yaz [mevsim3] => sonabahar [mevsim4] => kış ) 
*/
?>

Başka bir örnek:

<?
$sebze["domates"]=5;
$sebze["biber"]=12;
$sebze["patlican"]=15;
$sebze["marul"]=10;
print_r ($sebze)
/*
Ekran Çıktısı:
Array ( [domates] => 5 [biber] => 12 [patlican] => 15 [marul] => 10 )
*/
?>

Dizi Eleman Sayısını Bulmak

Bir dizinin eleman sayısını bulmak için count(); veya sizeof(); fonksiyonunu kullanırız.

<?
$sene["mevsim1"]=("ilkbahar");
$sene["mevsim2"]=("yaz");
$sene["mevsim3"]=("sonabahar");
$sene["mevsim4"]=("kış");
$sayi = count($sene);
print "bir senede $sayi mevsim vardır.";
?>

2 (Düzenleyen: yagizcapari, Düzenleme tarihi: 25-02-2017 11:46:50)

Cvp: PHP'de diziler

Dizi Fonksiyonları
http://yazilimdersi.info/frontside/images/articles/normal/php-sql.jpg
1)count()
2)in_array()
3)array_search()
4)sort()
5)rsort()
6)asort()
7)arsort()
8)array_merge()
9)array_keys()
10)array_push()

1)count()
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.
?
1
2
3
4
5

<?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.
?
1
2
3
4
5
6
7
8

<?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.
?
1
2
3
4
5
6
7
8

<?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.
?
1
2
3
4
5
6
7
8
9
10
11
12
13

<?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.
?
1
2
3
4
5
6
7
8
9

<?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.
?
1
2
3
4
5
6
7
8
9
10
11

<?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.
?
1
2
3
4
5
6
7
8
9
10
11

<?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.
?
1
2
3
4
5
6
7
8

<?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:
?
1
2
3
4
5
6
7
8
9

<?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.
?
1
2
3
4
5
6
7
8
9
10

<?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.
?
1
2
3
4
5
6
7
8
9

<?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.
?
1
2
3
4
5
6
7
8

<?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.

Örnek: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.
?
1
2
3
4
5
6
7
8
9
10

<?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.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

<?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.

Örnek:Takıma seçilen öğrencilerin numaralarını alıp ekrana yazalım.
?
1
2
3
4
5
6
7
8

<?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.
?
1
2
3
4
5
6
7
8
9
10
11
12

<?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>";
?>