PhP Diziler


Diziler
Aynı türden verilerin tek bir değişken ile temsil edilmeleri gerektiğinde kullanılırlar.
Aynı türden olan, ancak sayıları çok fazla olan farklı verilerin saklanması gerektiğinde, tanımlanması gereken değişken sayısı da paralel olarak artacağından, bu gibi durumlarda önemli bir işleve sahiptirler.
İleriki bölümlerde ele alacağımız döngüsel yapılarla kullanıldıklarında, gereksiz kod yazımını da önemli ölçüde azaltan diziler (array), tek boyutlu ve çok boyutlu olarak sınıflandırılabilirler.

Tek Boyutlu Diziler
Konuya bir örnekle başlayalım:
< ?php
$arabalar1="Honda";
$arabalar2="Volvo";
$arabalar3="BMW";
$arabalar4="Toyota";
? >
Sadece dört tane araba markasını saklamak istediğimizden, dört tane farklı değişken kullandık. Ama ya 400 farklı markayı saklamak isteseydik?

Aynı örneği, dizi kullanarak yapalım:
< ?php
$arabalar=array("Honda","Volvo","BMW","Toyota");
? >
Bu defa tanımlamış olduğumuz tek bir değişken olan $arabalar’dır. Ancak bu değişken, “array” bildirimi kullanılarak oluşturulmuş bir dizidir.

Aynı tanımlamayı farklı bir şekilde de yapabilirdik:
< ?php
$arabalar[0]="Honda";
$arabalar[1]="Volvo";
$arabalar[2]="BMW";
$arabalar[3]="Toyota";
? >
Bu tanımlamada, dizinin indisi adı verilen köşeli parantezlerin içersinde yer alan değerleri kendimiz belirledik.

Her iki tanımlama için de aşağıdaki kod parçası,
echo "$arabalar[0] ve $arabalar[3] Japon otomobil markalarıdır.";
aynı ekran çıktısını verecektir:
Honda ve Toyota Japon otomobil markalarıdır.

Dizilerin indislerinin sayısal olmaları zorunluluğu yoktur.

< ?php

$uretici['Honda'] = 'Japonya';
$uretici['Volvo'] = 'İsveç';
$uretici['BMW'] = 'Almanya';
$uretici['Toyota'] = 'Japonya';
echo "Volvo'nun üreticisi "
.$uretici['Volvo'].“’dir.";
? >
Volvo’nun üreticisi İsveç’dir.

İlişkilendirilmiş İndisler
Dizileri tanımlamanın diğer bir yolu da, => operatörünü kullanarak indisle değeri doğrudan ilişkilendirmektir.

Bu duruma bir örnek aşağıda verilmiştir:

< ?php


$uretici = array("Honda"=>"Japonya", "Volvo"=>"İsveç", "BMW"=>"Almanya", "Toyota"=>"Japonya");
echo "Honda ve Toyota'nın üreticisi "
.$uretici['Honda'].“’dır.";
? >
Honda ve Toyota’nın üreticisi Japonya’dır.

Çok Boyutlu Diziler
Çok boyutlu dizilerin yapısal olarak tek boyutlu dizilerden bir farkı yoktur. İndis sayısı birden fazla olduğu durumlarda dizi çok boyutlu olarak adlandırılır.

Teorik olarak n>1 olmak üzere n-boyutlu bir dizi tanımlanabilir, ancak pratikte iki boyuttan sonra dizinin kontrolü oldukça güçleşmektedir.
İki boyutlu dizileri, tablolar biçiminde ifade edebildiğimiz türden verileri saklamak için kullanırız.

< ?php
$uretim = array ("2005" => array("Buğday" => 145,"Arpa" => 90, "Mısır" => 210,"Tütün" => 55), "2006" => array( "Buğday" => 167,"Arpa" => 60, "Mısır" => 120,"Tütün" => 165), "2007" => array("Buğday" => 180,"Arpa" => 45, "Mısır" => 130,"Tütün" => 121), "2008" => array("Buğday" => 317,"Arpa" => 120,"Mısır" => 134,"Tütün" => 152),"2009" => array("Buğday" => 62, "Arpa" => 261,"Mısır" => 34, "Tütün" => 135));
echo "2006 yılında toplam mısır üretimi " . $uretim["2006"]["Mısır"] . " ton olmuştur.";
? >
2006 yılında toplam mısır üretimi 120 ton olmuştur.
Görüldüğü gibi iki boyutlu diziler, aslında her bir satırı tek boyutlu diziden oluşan matris tipindeki yapılardır. Bu yapıda her satırın aynı türdeki verilerden oluşması yeterlidir, dizinin tamamının aynı türde verilerden oluşma zorunluluğu yoktur.

Örneğin:
81
PHP Programlama -2. Bölüm Tolga GÜYER
< ?php
$dizi = array("üniversiteler" => array ( "a" => "Gazi", "b" => "Ankara", "c" => "Hacettepe" ),
"sayılar" => array ( 1, 2, 3, 4, 5, 6 ),
"yıllar" => array ( "1998", 2 => "1999", "2000"));
echo $dizi["üniversiteler"]["a"]."
";

echo $dizi["üniversiteler"]["c"]."
";

echo $dizi["sayılar"][0]."
";

echo $dizi["sayılar"][3]."
";

echo $dizi["yıllar"][0]."
";

echo $dizi["yıllar"][2]."
";

echo $dizi["yıllar"][1];
? >

Örnek koda ait ekran çıktısı aşağıdaki gibi olacaktır:

Gazi




Hacettepe
1
4
1998
1999





Kod içersinde 7 tane echosatırı olmasına karşın, çıktıda sadece 6 tane farklı satır görülmektedir. Bunun sebebi, son echosatırında [“yıllar”][1] indisli terimde herhangi bir verinin bulunmamasıdır.
Tanımlama biçiminden dolayı bu indis için sadece [“yıllar”][0], [“yıllar”][2] ve [“yıllar”][3] terimleri değer içermektedir.

< ?php
$a = array("a" => "elma", "b" => "muz");
$b = array("a" => "kayısı", "b" => "çilek", "c" => "vişne");
$c = $a + $b;
echo($c["a"]."
");

echo($c["b"]."
");

echo($c["c"]."
");

? >

elma
muz
vişne








Öne Çıkan Yayın

Hibernate Nedir?

Hibernate Nedir? Veritabanı işlemlerinde bize yardımcı olan, obje kavramından uzaklaşmadan işimize devam etmemizi sağlayan bir yapı. Artık...