Varsayılan parametreli fonksiyonlar

27 Mayıs 2008 Salı

- Varsayılan parametreli fonksiyonlar;

Bir fonksiyon içerisinde, kullanılan parametrelere varsayılan değerler de atanabilir. Parametrelere varsayılan değer atandığında, fonksiyon herhangi bir parametreye gerek duyulmadan da çağrılabilir. Bu durumda fonksiyonumuz, tanımlamada kullanılan parametrenin varsayılan değerini,parametre girilmiş olarak kabul edecek ve o parametrelerle çalışacaktır.

<?php
function faktor($varsayilan = 5)
{
$islem = 1;
for ($i = 1; $i <= $varsayilan; $i++)
$islem *= $i;
return $islem;
}
print faktor(). "<br/>";
print faktor(10)
?>

Örneğimizde kendisine atanan değerin faktöryelini bulan bir fonksiyon tanımlanmış ve alacağı parametreye varsayılan olarak 5 değeri atadık. Ardından önce kod parçamızdan faktor() fonksiyonumuz parametresiz olarak çağırdık,. Fonksiyonumuz varsayılan değer olarak 5 i kabul edip 120 değerini tarayıcımıza yansıtmıştır. Daha sonra faktor() fonksiyonumuza 10 değerini atayarak bir kez daha başvurup, varsayılan parametre değeri yerine, girmiş olduğumuz parametre ile işlem yapmasını sağlamış olduk.

- Parametre sayısı değişen fonksiyonlar;

Yapısı gereği bazı fonksiyonların alacağı parametre sayısı belli olamayabilir. Bu tür fonksiyonlar, fonksiyonun işleme alacağı değişken sayısının önceden kesinleştirilmemiş olmasından dolayı tasarlanırlar ve farklı sayılarda değişken üzerinde işlem yapabilmemizi sağlarlar. Bu tür fonksiyonlar tasarlanırkenuygulayacağımız yöntem, fonksiyona gönderilen parametrelerin, kaç adet olduğunu func_num_args(), fonksiyonu ile saptamamız, ardından parametrenin func_get_arg(); fonksiyonu ile indisli olarak çağrılması olacaktır. indisleme işlemi sıfırdan başlayarak, değişken saytısının bir eksiğine kadar yapılır.
Aşağıdaki örneğimizi dikkatle inceleyelim.

<?php
function carp()
{
$carpim = 1;
$degiskenAdedi = func_num_args();
for($i = 0; $i < $degiskenAdedi; $i++)
$carpim *= func_get_arg($i);
return $carpim;
}
print carp(1, 1, 1) ."<br/>";
print carp(5, 10, 10);

?>

Örneğimizde, tasarlamış olduğumuz fonksiyonun kendisine geçirilen farklı sayıdaki parametreleri alarak her bir değişkeni bir biri ile çarpmasını ve sonucu tarayıcımıza yansıtmasını sağladık.

func_num_args(); fonksiyonu hakkında daha geniş bilgi için burayı ziyaret ediniz.

func_get_arg(); fonksiyonu hakkında daha geniş bilgi için manuali ziyaret ediniz.

- Bir fonksiyonu durdurmak,

Bir fonksiyon, tüm deyimler çalıştırıldığında veya, return anahtar kelimesi kullanıldığında durur. Bir fonksiyon durdurğunda, ana kod parçasındaki, fonksiyona çağrı yapıldıktan sonraki deyime geri dönülür.

function deneme()
{
print "Bu deyim Çalıştırılacaktır";
return;
print " bu deyim ise returnden sonra kullanıldığından çalıştırılmayacaktır.";
}
print deneme();

Bir fonksiyonun çalıştırılmasını durdurmak için return anahtar kelimesine başvurmamızın temel sebebi, fonksiyonumuzun muhtemel bir hata koşulunu gerçekleştirme olasılığıdır. Fonksiyon içinde return deyimi çalıştırıldığında, o fonksiyon içerisinde returnden sonrayı takip eden deyimler görmezden gelinecektir.

- Fonksiyondan değer döndürmek;

Yukarıda fonksiyonları durdurmak için kullanmış olduğumuz return anahtar kelimesi, aynı zamanda o fonksiyonun, kendilerini çağıran kodla iletişim kurulması içinde kullanılır. Bu sayede fonksiyonu çağıran kod parçası, bu sonucu kullanıp kullanmayacağını, nasıl göstereceğini veya nasıl kullanacağını seçebilir.

- Statik değişkenler;

Bazı durumlarda, sadece bir fonksiyon için gerekli olan bir değişken tanımlamak zorunda kalabiliriz. Bunu yapmanın en iyi yolu, o değişkeni fonksiyonumuzun içierisinde tanımlamaktır. Ancak fonksiyonların kapsam özellikleri nedeniyle fonksiyon içerisinde tanımlanan değişkenlerin, fonksiyonların çalışması durduğunda yok olduğunu öğrenmiştik. Eğer bir fonksiyon içinde fonksiyonumuzun çalışması durduğunda değerini yitimeyen bir değişken tanımlamak ve o fonksiyon çağrıldıkça bu değişkene baş vurmak istiyorsak bu değişkeni static olarak bildirmeliyiz.

function ekle () {
static $degisken = 10;
$degisken++;
print $degisken;
}
// Başka kodlar buraya girebilir
ekle(); // Çıktımız burada 11 değerinde
print "<br/>";
ekle(); // Çıktımız burada 12 değerinde

Fonksiyonumuz her çağrıldığında static deyimi ile bildirdiğimiz değişkenin içindeki verinin kod parçamız tarafından işlendiğine ve değerinin ise fonksiyonda üretilen değer olarak saklandığına dikkat ediniz.

Gönderen _nl2br zaman: 02:16 0 yorum  

Fonksiyonlar

26 Mayıs 2008 Pazartesi

Belirli bir işlemi gerçekleştirmek için çağrı yapan bir arabirim gerektiren ve seçime bağlı olarak bir sonuç döndüren kod modülüne fonksiyon diyoruz. Tek ve kesin bir işlemi gerçekleştiren kodları ayırmaya, kodun okunmasını kolaylaştırmaya, aynı işlemi tekrarlamak gerektiğinde kodu yeniden kullanmamıza olanak sağlarlar.
Php'de fonksiyonları 2 temel grupta toplamak olasıdır.
1- Php'nin kendi yerleşik fonksiyonları.
2- Kullanıcı tanımlı fonksiyonlar.

Bir fonksiyonu çağırırken kullandığımız genel yol ;

function(parametre1, parametre2, ...) ;

gibidir. Eğer parametre gerektirmeyen bir fonksiyona başvuruyorsak çağrımız;

function_ismi();

biçiminde olacaktır. Bu biçimde çağrılan bir fonksiyondan değer döndürmesi beklenmez. Örneğin sunucumuzda yüklü php bileşenleri için bilgi almamızı sağlayan phpinfo(); fonksiyonu bu tür fonksiyonlardandır. Bir parametre almadığı gibi genellikle döndürdüğü değeri dikkate almayız.
Parametre gerektiren fonksiyonumuza çağrı yaparken parametreyi veriyi saklayan bir değişken veya veri ile fonksiyon adından sonraki parantezler içerisine yerleştirerek geçiririz.

$karaktersay = strlen("mehmet);

Örneğimizde mehmet verisinin sahip olduğu karakter verisini öğrenmek amacıyla php' nin yerleşik fonksiyonu olan strlen(); fonksiyonuna parametre olarak mehmet adını geçirdik.
Bir fonksiyona parametre geçirmekle, ham veriden stringe stringten bir diziye kadar bir çok veri kalıbını değerlendirmeye alırız. Parametreler herhangi bir veri tipinde olmakla bazı fonksiyonlar özel veri tioleri gerektirir. Bir fonksiyonun kaç parametre aldığını, bunların nleri temsil ettiğini, ne tür veri tipi ile işlem yaptığını anlamak için fonksiyonun prototiplerinden yararlanırız. strlen(); fonksiyonunun prototipine bakalım. http://tr2.php.net/manual/en/function.strlen.php

int strlen ( string $string );

Prototibi incelediğimizde fonksiyon adından önce gelen int sözcüğü, bu fonksiyonun bir tam sayı döndüreceğini gösterir. Fonksiyonun alacağı parametreler ise parantezin içindedir.

Php fonksiyon adlarına yapılan çağrılarda, değişkenler gibi büyük küçük harf ayrımına duyarlı değildir. Php' de function_iSMi(); ile function_ismi(); yazmak arasında bir fark yoktur.

Kullanıcı tanımlı fonksiyonlar;

Halihazırda php'nin yerleşik fonksiyonları ile bir çok işlemimizi yapabiliriz. Ancak bazen bu bize yeterli olmaz. Hazırladığımız betiklerde, bir çok kez kullanmak istediğimiz kod parçaları yazıyorsak, bunları tekrar tekrar yeniden yazmak yerine, bir fonksiyon olarak tanımlama, gerektiğinde bu fonksiyona başvurarak işlemlerimizi yapmak, işimizi hem oldukça kolaylaştıracak,hem zaman kazandıracak hem de yazdığımız kodların daha hızlı ve tutarlı çalışmasını sağlayacaktır.

- Temel yapı;

Php' de bi fonksiyon bildirmek, yeni bir fonksiyon yaratmamıza neden olur. Bildirme işlemi anahtar sözcük function ile başlar. Bu bildirimin ardından fonksiyonumuzun adını, gereken parametreleri, ve bu fonksiyonun çağrılması durumunda çalıştırılacak kodu bildiririz.

function fonksiyonum()
{
print "Ben çağrıldım vede ahanda burdayım.";
}
print fonksiyonum();
Bu fonksiyonu çağırmak, tarayıcıda "Ben çağrıldım vede ahanda burdayım." ifadesinin yansıtılmasına neden olur.

Php'de yerleşik olan fonksiyonlara tüm php scriptlerinde erişebilir onlarla işlem yapabiliriz. Ancak kendi tanımladığımız fonksiyonlara sadece içinde bildirdiğimiz program boyunca erişebilir onlarla yapacağımız işlemleri sadece o program içerisinde gerçekleştirebiliriz.
Fonksiyonumuz içerisinde kullandığımız süslü parantezler, ihtiyaç duyduğumuz işi gerçekleştirecek kodu kapsar. Bu parantezlerin içinde, başka fonksiyonlara yaptığımız çağrılar, yeni fonksiyonların veya değişkenlerin bildirimleri, düz HTML kodları, farklı dosyaları ithal etmek gibi bir php scripti içinde geçerli olan her şey bulunabilir. Bir fonksiyon içerisinde, php'den çıkıp düz HTML kodu yazmak istersek, Php fonksiyon yapısı buna da olanak sağlar. Bunun için php kapanış etiketi olan ?> ile php'den çıkılır ve düz HTML etiketlenmesine devam edilir. Ardından yeniden php başlangıç etiketi açılarak <?php kalan php işlemleri yapılır ya da fonksiyon kapatılır.

<?php
function fonksiyonum()
{
?>
Ben Çağrıldım ve işte burdayım
<?php
}
print fonksiyonum();
?>

Bu örneği print fonksiyonum(); satırını kaldırarak ta deneyiniz.

- Fonksiyonları adlandırmak;

Fonksiyonlarımızı isimlendirirken, vereceğimiz fonksiyon adının, kısa ama açıklayıcı olduğuna dikkat edersek bu ileride karşılaşacağımız olması muhtemel hataların önüne daha hata olmadan geçmiş olur. Bununla birlikte php' de fonksiyon tanımlarken uymamız gereken bir kaç basit kural daha var.
- Fonksiyonumuzun adı, php'de önceden tanımlı yada daha önce kendimizin tanımlamış olduğu fonksiyon adı ile aynı olamaz.
- Kullanacağımız fonksiyon adlarında, sadece harfler, sayılar ve alt çizgiler bulunabilir.
- Fonksiyon adları bir sayı ile başlayamaz.

function ismi()
function ismi2()
function ismi_getir()
function _ismi()

Geçerli fonksiyon tanımlarıdır ama;

function 1_ismi()
function ismi-bir()
function phpinfo()
function strlen()

Bu tür fonksiyon tanımlamalar php için geçerli değildir.

- Parametreler;

Parametrenin tanımı; Çağrıldığında bir fonksiyona verilen ve bu fonksiyon çağrıldığında elde edilecek sonucu etkileyen bilgiler ya da verilerdir. Bir çok fonksiyonun işini yapabilmesi için, bir yada birden fazla parametreye ihtiyacı vardır ve parametreler bir fonksiyona veri geçirebilmemizi sağlarlar. Aşağıda geçirdiğimiz parametrenin karesini döndüren bir fonksiyon yapısı örneklenmektedir.

<?php
function kare($x)
{
return $x * $x;
}

print '5 in karesi'. kare(5). 'tir';
?>

Örneğimizde ilk önce function bildirimi ile bir fonksiyon tanımlayacağımızı bildirdik ve ardından fonksiyon adımız olan fonksiyonum' u yazdık. Ardından fonksiyonumuzun alacağı parametreyi parantezler arasında bildirdik. ardından kod bloğumuzu açarak, fonksiyonumuzun döndürmesini istediğimiz değerin işlemini bildirdik ve kod bloğumuzu kapattık. Daha sonra fonksiyonumuzun dışından tarayıcımızda karesini yansıtmak istediğimiz sayıyı fonksiyonumuzu çağırıp parametre olarak işlenecek değer olması için paranteslerin içine girdik ve tarayıcımızın " 5 in karesi25tir" ifadesini yansıtmasını sağladık. Örneğimizi farklı sayılar deneyerek geliştirebilirsiniz. Örneğimizde kullandığımız return ifadesi, bir fonksiyonun değer döndürülmesi isteniyorsa kullanılır. Bu değer fonksiyonun yaptığı işlemin sonucu olabileceği gibi, o işleme bağlı olarak true ya da false olarak bir boolean değer olabilir.
Şimdi 1'den verdiğimiz parametre ye kadar olan sayıların toplamını oluşturan bir kod parçası tasarlayalım.

<?php
function toplam($x)
{
$toplam = 0;
for($i = 1; $i <= $x; $toplam += $i, $i++);
return $toplam;
}
print '1 den 5 e kadar olan sayıların toplamı' .toplam(5).' tir';
?>

Kodumuzu toplam fonksiyonu olarak tanımlayıp parametre olarak verebileceğimiz her hangi bir rakamı temsil eden $x parametresini bildirdik. kod bloğumuzun içinde döngüden önce bir başlangış değeri saptadık. ardından bir for döngüsü ile 1' den verdiğimiz parametre değeri kadar sayacımızın çalışmasını ve ardından elde ettiği değeri toplayarak, $toplam adlı değişkende depolamasını ve döngümüzün koşulu yerine getirildiğinde bu değişken içinde depolanan değeri return ifadesiyle fonksiyonumuzun çıktısı olarak bize göndermesini bildirdik. Fonksiyonumuzu print deyimi ile çağırdığımızda verdiğimiz 5 sayısını parametre olarak alıp bize 1'den 5' e kadar olan sayıları toplayıp yansıttığını gördük.

- Fonksiyonlarda kapsam;

Fonksiyonlarda değişken kapsamı farklı davranışlar gösterir. Bir değişkenin kapsamı, o değişkenin nerelerde görünür ve kullanılabilir olduğunu belirler. Php'de değişkenlerin kapsamını belirleyen bir kaç kural vardır.

- Bir fonksiyonda bildirilen değişkenler, içinde bildirilmiş oldukları deyimden fonksiyonun sonundaki kapatma parantezine kadar geçerlidirler. Buna fonksiyonun kapsamı denir. Bu tip değişkenler ise yerel değişkenler olara bilinir.
- Fonksiyonların dışında bildirilen değişkenler, içinde bildirilmiş oldukları deyimden, dosyanın sonuna kadar geçerlidir. Ancak fonksiyonların içerisinde geçerli olamazlar. Buna genel(global) kapsam adı verilir. Bu tür değişkenler ise global değişkenler olarka bilinirler.

<?php
function fonk()
{
$deg = 2;
}
$deg = 1;
fonk();
print $deg;
?>

Fonksiyonumuz çağrıldığında $deg değişkeninin değerinin 2 ye ayarlandığına, ama bu değişimin fonksiyon içindeki $deg değişkeni ile sınırlı kaldığına, çıktımızın genel değişken olan 1 e ayarlı olarak tarayıcıya yansıttığına dikkat ediniz.
Eğer fonksiyon içerisinde aynı adlı değişkemizin fonksiyonumuz tarafından işlenmesini istiyorsak $GLOBALS [] anahtar sözcüğünü kullanarak değişkenimizi programımızın tamamı için genel hale getirebiliriz.

<?php
function fonk ()
{
$GLOBALS["deg"] = 2;
}
$deg = 1;
fonk();
print $deg;
?>


Global anahtar sözcüğü kullanıldığında, $deg değişkenimiz fonksiyon çağrıldıktan sonra fonksiyonun dışındada varlığını sürdürecektir. Artık kodumuz $deg değişkenini 2 olarak yorumlayabilir. Global anahtar sözcüğünümkullanarak, bir değişkeni tüm program boyunca kapsam içerisinde tutabiliriz.

- require ve include deyimleri kullanmak, kapsamı etkilemez. Eğer deyim bir fonksiyonun içindeyse, fonksiyon kapsamı geçerlidir. Eğer fonksiyon dışındaysa genel kapsam içindedir.
- Değişkenler, unset() fonksiyonu çağrılarak silinebilirler. Bir değişken bu fonksiyon kullanılarka silindiyse artık kapsamda değildir.

- Bir fonksiyona referansla veya değerle parametre geçirmek;

Fonksiyon parametrelerinin normal çağrılma yoluna, "değerle parametre geçirmek" adı verilir. Fonksiyona bir parametre geçirdiğimizde, geçirilen değeri içeren yeni bir değişken yaratılır. Bu değişken orjinal değişkenin bir kopyasıdır. Ancak bu değişkenin değeri fonksiyon içinde yaptığı işleme göre farklı, fonksiyon dışında ise ilk tanımlandığı haliyle farklı olur. Fonksiyonların kapsam kuralları gereği, global anahtar sözcüğünü kullanmadığımız sürece bu durum böyledir. Global anahtar sözcüğü kulanmak ise bazen sıkça tercih edeceğimiz bir yol olmayabilir. Eğer programınızı farklı sayfalara bölmüş yada modüle rbir biçimde tasarlamışsanız, muhtemelen çalışması bitmiş olan değişkenleri bellekten silmek isteyeceksiniz. Belkide bir değişkenin tüm programınız boyunca global kapsam içerisinde kalmasını tercih etmeyeceksiniz. İşte bu tür durumlarda, uygulamak isteyeceğiniz yol, en kolay yol olarak fonksiyonunuza parametre geçirerek çıktı üretmek olacaktır. Aşağıdaki kodu incelerseniz, bunun bazen oldukça karmaşıklaşabildiğini göreceksiniz.

<?php
function ekle($eklenen, $deger = 1)
{
$eklenen = $eklenen + $deger;
}

$eklenen = 10;
ekle($eklenen);
print $eklenen
?>

Kod parçamızın çıktısının verdiğimiz parametre değeri ile aynı yani 10 olarak kaldığını göreceksiniz. Bunun nedeni kapsam kurallarıdır. Kodumuz $eklenen adında 10 değerini içeren bir değişkeni yaratır ve ardından ekle adlı fonksiyonu çağırır. Fonksiyon içinde yaratılan 10 değerli değişkene 1 değeri eklenir ve $eklenen değişkeninin değeri, fonksiyonun yapısı boyunca 11 olarak saklanır. Bu fonksiyonu çağıran koda döndüğümüzde $eklenen adlı değişkenimiz genel kapsam içerisinde ve bambaşka bir değişkendir. Fonksiyon içindeki $eklenen değişkeni genel kodumuz içindeki $ekle değişkeni ile kopya olmasından başka hiç bir benzerliği yoktur. İşte bu yüzden de $eklenen değişkenimizin değeri 11 olarak değişmemiştir.

Parametreyi referansla geçirmek çok daha kolay ve daha sade bir yoldur. Parametre bir fonksiyona geçirildiğinde, fonksiyonun yeni bir değer yaratmasını sağlamaktansa, orjinal değişkeni gösteren bir referans işaretiyle fonksiyona dahil olur. Bu değişkeninde normal değişkenler gibi $ işaretiyle belirlenen bir işareti vardır ve diğer değişkenlerle aynı biçimde kullanılabilirler. Ancak, bu değişkenin kendi değeri yoktur ve sadece orjinalinin bir referansıdır. Bu referans değişkende yaptığımız her değişiklik orjinal değişkeni de direkt olarak etkiler. Parametrenin referansla geçirme işleminde kullanılacağını önüne bir & (ampersand - ve-) işareti koyarak bildiririz. Bu parametremiz fonksiyon tanımlamada kullandığımız parantezlerin içerisinde olur. Böylelikle fonksiyonumuzda ek bir değişikliğe de gitmemize gerek kalmaz.

Yukarıdaki kod parçamızı, parametremizi referansla geçirerek yeniden düzenlersek;

<?php
function ekle(&$eklenen, $deger = 1)
{
$eklenen = $eklenen + $deger;
}

$eklenen = 10;
print $eklenen. "
";

// Referansla geçirilmiş hali
ekle($eklenen);
print $eklenen // Artık değişkenimiz 11 değerine sahip
?>

Parametreleri bir referans ile geçirme işlemimizin sonucu ekran çıktılarımızda net bir biçimde görülecektir. Referansla değer geçirmenin bir avantajı da, fonksiyon ile çağrılan değişken üzerinde değişiklikler yapabilmemizdir.

<?php
function kare_al(&$deger)
{
$karesi = $deger * $deger;
$deger = $karesi;
}
$veri = 10;
kare_al($veri);
print $veri;
?>

Örneğimizde, $veri değişkenine ilk önce 10 değeri atanmış, sonra da kare_al fonksiyonunu $veri parametresi ile çağrılmıştır. Fonksiyonumuz, &$deger biçiminde referansla parametre aldığından, $veri değişkeni ile $deger parametresi bilgisayarın aynı hafıza alanını kullanacaktır. Bu yüzden fonksiyon parametresi $deger değişkeni üzerinde yapılacak olan her değişiklik, $veri değişkenimizide yetkileyecektir. Kod parçamızda $veri değişkenimizin değerinin 10 olmasına rağmen, fonksiyon çalıştırıldığında $veri değişkenimizin değeri 100 olacaktır.

Gönderen _nl2br zaman: 01:40 0 yorum  

Bir kontrol yapısını veya scripti durdurmak

25 Mayıs 2008 Pazar

Eğer bir kod parçasının çalışmasını durdurmak istiyorsak yaratmak istediğimiz etkiye bağlı olarak üç farklı yaklaşımdan faydalanabiliriz.

- Eğer bir döngünün çalıştırılmasını durdurmak istiyorsak, break; deyimini kullanabiliriz. Döngü içerisinde break kullandığımızda, programımızım çalıştırılması döngüden sonraki ilk satırdan devam edecektir.

- Eğer bir sonraki döngü tekrarına atlamak istiyorsak, continue; deyimi işimizi görecektir.

- Bütünüyle betiğin çalıştırılmasını durdurmak istiyorsak, exit deyimini kullanmamız yeterli olacaktır.

Yukarıda verdiğimiz sonsuz döngü içeren kod parçamızı kullanarak bir örnek yapalım:

<?php
$i =1;
for(; ;)
{
if($i > 10)
break;
else
print "$i ";
$i++;
}
?>

Burada for döngüsüne başlangıçta hiç bir şart ve ifade girmedik ama onun yerine başlangıç değerini döngüden önceye, koşul ve sayaç değerini kod bloğu içerisine alarak yani döngünün içerisinde karar kontrol yapısı kullanarak ve break deyimini kullanarak yinede bir döngü kurabildik. Burada break deyimi döngü içerisinde geçtiği anda döngüden çıkıldığına dikkat ediniz. Aşağıdaki örneğimizi dikkatle inceleyiniz:

<?php
for($i = 0; $i <= 5; $i++) { if($i == 4) continue; print "$i "; } ?>
Bu kod parçamızda 1' den 5' e kadar olan sayıları yazdırıyoruz. Döngümüz karar yapımız olan if($i == 4) ifadesine rastlayana kadar çalışmasını sürdürüyor ama deyimin içerisinde koşul 4'e eşitlendiğinde continue deyimi ile bu adım atlanıyor ve döngümüzün çalışması bir sonraki adım olan 5 değeri almış sayaç değişkenine akıyor. Tarayıcımızda göreceğimiz çıktı ise şöyle olacaktır;
0
1
2
3
5

Gönderen _nl2br zaman: 04:37 0 yorum  

Döngüler

Tekrarlanan işleri otomatikleştirmek bir programcının en sık başvurduğu yollardan biridir. Eğer bir şeyi bir kaç kez yapmamız gerekiyorsa programımızın bazı kısımlarını tekrar etmemiz için döngülerden (loop) faydalanırız. Döngüler programlama dillerinin en önemli yapılarındandır. Php' de kendimizi geliştirdikçe tekrarlanan işlemlerden sıralamalara kadar, döngülere sık sık başvuracağız. For döngüsüyle işe başlayalım,

- for döngüsü;
Yapısı:

for(ifade1; koşul; ifade2)
{
ifade3;
}

Php'deki en kısa döngülerdendir. Döngü yapısında üç tane ifade kullanılır.
- Birinci ifade döngüye ilk girildiğinde çalıştırılır. ( Burada genellikle sayacın ilk değeri ayarlanır.) Ardından koşula geçilir.
- Burada bir koşul sağlamak için girdiğimiz ifade vardır ve bu koşul, her tekrardan önce kontrol edilir. Eğer buradaki koşulun sonucunda false değer döndürülürse, tekrarlama işlemi durdurulur. Bu deyimde genellikle sayacı kontrol etmek amacıyla bir limit değeri ile şartlandırırız.
ardından ikinci ifadeye geçilir
- İkinci ifade her tekrarın sonunda bir kez çalıştırılır. (Burada ise sayacın değeri ayarlanır)
Ardından üçüncü ifadeye geçilir.
- Üçüncü ifade de her tekrarda bir kez çalıştırılır. Bu ifademiz genellikle bir kod bloğudur ve bloğun içierisinde koşulumuz true değer ürettiği sürece tekrarlanmasını istediğimiz bir işlem veya bir eylem vardır.
For döngüsünü adaha iyi anlayabilmek için aşağıdaki örnekte, 1'den 10'a kadar olan sayıları satır satır döken bir kod parçası tasarlayalım. Böyle bir kod parçası için önce ifadelerimiz ve koşulumuz tek tek düşünelim. Sayıları 1'den 10'a kadar dökeceğimiz için, ilk ifademizde sayacımızın başlangıç değerini 1, Koşul değerini ise 1'den büyük,10'a eşit olarak ayarlamamız gerekir. Başlangıç değerini 1 olarak atamamız bize döngümüz çalıştığı sürece her turda 1 adım ilerleme olanağı sağlar. İkinci ifademizde ise sayacımız sondan arttırma operatörünü kullanarak değer atamamız yeterli olacaktır. Üçüncü ifademizde ise adım adım elde ettiğimiz verileri ekrana yansıtmak gereken kod parçası olacaktır.
<?php
for ($i =1; $i <= 10; $i++) { echo "$i <br/>"; } ?> Şimdi Kod parçamızın çalışma diagramına bakalım:
Örneğimizde; döngümüze başlangıç değeri olan 1 ile girilmiş, ardından döngü için verilen şarta bakılmıştır. Döngü şartı sağlandığından kod bloğumuz çalıştırılıp ekrana o anki sayaç değeri yansıtılmıştır. Daha sonra + sayacımızın değerine bakılıp, o anki sayaç değeri bir adım arttırılmış ve dögü koşuluna bir kez daha bakılmıştır. Koşul sağlandığından, işleme false değer üretilene kadar bu biçimde aşama aşama devam edilmiş, $i olarak verdiğimiz değer 10 olduğunda alınan boolean değer false olduğundan döngüden çıkılmış ama kod bloğumuz son kez olarak işlenip son sayac değerini ekrana taşımıştır.

Aşağıdaki örnekte 0' dan 10' a kadar olan sayıların karelerini ekrana yansıtıyoruz.


<?php
for($i = 0; $i <= 10; $i++)
{
print "$i'in karesi". $i * $i. "dir <br/>";
}
?>

Bu kod parçamız Ekrana;

0'in karesi0dir
1'in karesi1dir
2'in karesi4dir
3'in karesi9dir
4'in karesi16dir
5'in karesi25dir
6'in karesi36dir
7'in karesi49dir
8'in karesi64dir
9'in karesi81dir
10'in karesi100dir
değerlerini bastıracaktır.

Bu kod parçasının çalıştırılma aşamasınd aneler olduğunu artık düşünebiliyoruz sanırım.
İlk olarak döngüye $i değişkenine girdiğimiz 0 değeri ile girilmiş, şarta bakılmış bir adım ilerlenmiş ve 0 * 0 ın değeri (0' ın karesi) ekrana yansıtılmış ve döngüye 1 adım arttırılarak devam edilmiştir.
Konuyu daha iyi kavrayabilmemiz için bir örnek daha yapalım. Örneğimizde, 1' den 5' e kadar olan sayıların toplamlarını alacak ve döngümüzün çalışma diagramına bakacağız. Bunun için yapmamız gerekeni az çok tahmin edebilirsiniz.


<?php
$topla = 0;
for($i = 1; $i <= 5; $i++)
{
$topla = $topla + $i;
}

print $topla;
?>

Kodumuz 1' den 5' e kadar olan sayıları toplayacak ve çıktı olarak 15 değerini ekrana yansıtacaktır.



Kodumuz çalıştıkça, $topla değişkenimize, sürekli olarak döngü değişkenimiz $i' nin değerini ekleyip şartın sağlanamadığı komumdaki değeri bize yansıtmış ve işini bitirmiştir.

Programlama yaparken bazen sonsuz döngülerle karşılaşırız. Ya mantıklı olmayan bir süreç işletmiş, ya da döngü değerlerini eksik bırakmış programımızı kilitlemişizdir. Aşağıdaki örnek sonsuz döngülerin nasıl oluştuğunu anlatmak bakımından önemlidir.

<?php
for(; ;)
{
print "Ben bir sonsuz döngüyüm";
}
?> // Çıktı vermesi için işlemcinizin oldukça kasması gerekmektedir.

İfadelerin ve koşulun eksik olduğu ama komut bloğunu unutmadığımız bir döngü biçimi.

Php' de döngü kullanırken verdiğiniz ifade/koşul yapısının düzgün biçimde optimize edilmiş olduğunu önemle hatırlatmak isterim. Örneğin

<?php
$dizi = array(1, 2, 3);
for ($i = 0; $i <= count($dizi); $i++)
{
print $i;
}
?>

yerine;

<?php
$dizi = array(1, 2, 3);
$say = count($dizi);
for ($i = 0; $i <= $say; $i++)
{
print $i;
}
?>

gibi bir yapı php için daha anlaşılır ve daha az kaynak tüketmek anlamına gelir.

- while döngüsü;

Php' de en basit yapıya sahip, belkide en sık kullanılan döngü tipidir. Koşula bağlı olarak koşul true (doğru) olduğu sürece çalışır. Yapısı da oldukça basittir.

while( koşul)
{
ifade..... ;
}
Döngü bir koşul belirtmekle başlar ve her tekrar edilişte, koşul kontrol edilir. Koşul false değer üretince ifade bloğu çalıştırılmayacak, ve döngü sona erecektir.

<?php $sayi = 1; while($sayi <= 5) { print "$sayi
";
$sayi++; } ?>

Örneğimizde önce başlangıç için bir sayaç yaptık. Döngünün her tekrarından önce sayacı koşulumuz için kontrol ettik, ifademizi uygulattırdık ve ve tekrarın sonucunda sayacımızı yeniledik. Kodumuzu diagram üzerinde inceleyelim;

Başlangıçta, koşulumuz $i <= 5 ifadesi ile sorgulanmış, $i değişkenimizin değeri 1 olduğundan döngüye girilmiş, kod bloğumuz çalıştırılmış, döngü içerisinde her defasında, $i değişkeni sayaç değerimiz (+) ile arttırılmıştır. Her yinelemede, kod bloğumuz çalıştırılmış, $i değişkenin değeri 6 olana kadar bu süreç devam etmiştir. $i değişkeninin değeri 6 olduğunda döngüde şarta bağlı olarak false değeri oluşturulmuş ve döngüden çıkılmıştır. Aşağıdaki örneğimizde 1' den 10' a kadar olan çift sayılar while döngüsü yardımı ile dökülmüştür. <?php
$i =1;
while($i <= 10)
{
if($i % 2 == 0)
print "$i
";

$i++;
}
?>

Örneğimizi tek sayıları ekrana yansıtmak için yeniden yapılandırınız ve kendi sunucunuzda deneyiniz.

- Do .... while döngüsü;

do while döngüsüde while döngüsü gibi koşula bağlı olarak çalışır ancak, koşul döngünün başında değil sonunda kontrol edilir. Bu nedenle, koşul ifademiz false üretse bile, döngüye en az bir kez girilir. Bunun anlamı, bir do while döngüsü içerisinde yer alan deyim veya kod bloğu, her zaman en az bir kez çalıştırılmaktadır.

Aşağıdaki kodu dikkatle inceleyiniz.

<?php
$sayi = 100;
do
{
print $sayi. "</br>";
}
while($sayi < 1);
?>

// Tarayıcımız 100 rakamını ekrana yansıtır.

Bu kod parçası, koşulun başlangıçta false olduğu ve hiç bir zaman true olamayacağı bir yapıdadır. Ama do while döngüsü ile bir kez de olsa ilk çalışmıştır.

Gönderen _nl2br zaman: 01:03 0 yorum  

Karar yapıları

23 Mayıs 2008 Cuma

Karar yapıları, php içerisinde bir betik boyunca yürütme işlemlerinin akışını kontrol etmemizi sağlar. Bunlar koşullu kontrol yapıları ve döngüler olarka iki grupta toplanırlar.

Koşullu karar yapıları;

Kullanıcı girdilerine mantıklı yanıtlar verebilmemiz için, kodumuzun karar yeteneğine sahip olması gerekmektedir. Programlarımızın karar vermesini sağlayan yapılar koşullu karar yapıları, veya koşullu deyimler olarak adlandırılırlar. Bu bölümde if....else, switch....case, ve alternatif karar yapıları üzerinde durmaya çalışacağız.

a- if karar yapıları;

Bu karar yapısı, içindeki şart ifadesi true değer döndürdüğünde kod yada kod bloglarını çalıştırmamıza yarar. Karar yapısı içindeki şart, true ya da false değer döndüren herhangi bir karşılaştırma ifadesi yada mantıksal bir ifade olabilir. Kodumuzu kod bloğu içine aldığımızda(süslü parantez), koşul doğru olduğunda takip eden kod bloğu çalıştırılacaktır. if deyimlerindeki koşulların ( ) -parantez- içerisine alınması gerekir. Deyimin yapısı aşağıdaki gibidir.

if(koşul) komut;

veya süslü parantezler içerisinde -ki bu oldukça sağlıklıdır-

if(koşul) {
komut 1;
komut 2;
komut N;
}

- Kod blokları:

Çoğunlukla if koşullu deyimleri içersinde çalıştırmak istediğimiz birden fazla deyim bulunur. Bunların her birinin başına if koymak gerekmez. Bunun yerine örtüşen deyimleri, bir kod bloğu olan { süslü parandezler arasına } almamız işimizi oldukça kolaylaştıracaktır.

<?php
$mehmet = "öğrenci";

if($mehmet == "öğrenci") {
echo "<font color=navy>";
echo "Mehmet bir".$mehmet."dir";
echo "</font>";
}

?>

Yukarıdaki örneğimizde süslü parantezlerimiz içerisine aldığımız deyimleri if şartının true değer döndürmesi sonucunda ekrana bastırdık. Buradaki süreç şöyle gerçekleşmektedir: $mehmet değişkenimize atadığımız öğrenci değeri, if yapısı içerisinde şartın sağlanıp sağlanamadığını kontrol etmemiz için değerlendirildi. Koşulun doğruluğu programda test edilerek true tipinde bir boolean değer gönderildi ve süslü parantezler içerisindeki deyimlerimiz sırasıyla çalıştırıldı. Burada koşulumuz doğru ise süslü parantezler içerisindeki kod bloğumuzun çalıştığına dikkat ediniz. Peki eğer koşulumuz false(Yanlış) olsaydı ne olacaktı? Koşulun doğru veya yanlış olduğu durumlara göre kodumuzun karar vermesi için if yapısı içindeki else mekanizmasını kullanırız. burada else mekanizması koşulun false olduğu durumlarda gerçekleştirmek istediğimiz alternatif bir eylemin kodumuz içinde değerlendirilmesini sağlar. Şimdi yukarıdaki kod parçamızı else mekanizmasını kullanarak yeniden değerlendirelim.

$mehmet = "öğretmen";

if($mehmet == "öğrenci") {
echo "Mehmet bir öğrencidir.";
} else {
echo "Mehmet bir öğretmendir.";
}

örneğimizi incelediğimizde, if karar yapısının true değer döndürdüğünde, if deyiminin altındaki kod bloğumuz, false değer döndürdüğünde ise else deyiminin altındaki kod bloğumuzun çalıştırıldığını farketmişsinizdir. Bu karar yapısı aşağıdaki biçimde çalışır.

if(koşul)
{
eylem1;
eylem1;
}
else
{
eylem2;
eylem2;
}

elseif deyimleri;

Programlarımızı kodlarken kontrol edeceğimiz bir çok kararda ikiden fazla seçenek bulunabilir. else if deyimi bu tür durumlar için birden fazla seçenekten oluşan bir seri kontrol mekanizması gerçekleştirebilmemizi sağlarlar. elseif deyimi else ve if deyimlerininbirleşimlerinden oluşur. Kodumuza elseif ile gerçekleştirdiğimiz bir koşullar serisi sunduğumuzda, php true olanı bulana kadar her şartıkontrol edecektir.
Örneğin bir web sitemiz var ve ziyaretçilerin web sitemizi nereden duyduklarını öğrenmek istiyoruz. Bunun için elseif deyimini kullanarak basitçe bir karar kontrol yapısı kurup ziyaretçilerimizin seçimlerini işleyebiliriz.

<?php
$nereden = 3;
if($nereden == 1) {
echo "Tv Gazete ve dergi reklamlarından öğrendim";
} elseif ($nereden == 2) {
echo "Arkadaşımdan duydum";
} elseif ($nereden == 3) {
echo "Arama motorları yönlendirdi";
} elseif ($nereden == 4) {
echo "Tesadüfen sitenize girdim";// Çıktımız
Arama motorları yönlendirdi olur
}
//
$nereden değişkenine farklı numaralar atayarak durumu kontrol edebilirsiniz.
?>

Kodumuz bu örnekte verileri bir form değerinden almıyor. $nereden değişkeninin değeri dört seçimli bir form değişkeninden alınıp rahatça işlenebilir.Yukarıda görüldüğü gibi programımız true sonunucu bulana kadar her seçeneği tek tek işleyip true değerini bulduğunda o seçenekle ilgili olan kod bloğumuz çalıştırıp bize ulaşmak istediğimiz veri parçasını sundu.
Bu yapıda önemli olan bu tür basamaklı elseif yapılarında php motorumuz, bloglar ve deyimlerin sadece birini çalıştırır. Eğer koşullarımızın birden fazlası doğru olacak çekilde bir elseif basamaklı yapısı kurarsak, sadece ilk doğru koşulu takip eden deyimimiz ve ona bağlı olan blok çalıştırılır. Bu gibi durumların üstesinden gelebilmek için biz switch deyimlerini kullanırız.

b- switch, case karar yapıları;

switch deyimi if deyimine benzer biçimde çalışır ancak koşulun ikiden fazla değer almasına olanak sağlar. if deyiminin içine koşul true yada false olabilir. Oysa switch deyiminde, koşul çeşitli sayıda farklı değerler alabilir. Tepki vermek istenilen bir değeri kullanabilmemiz için, case mekanizmasını kullanmamız gerekir. Eğer belirli bir case deyimi ifade etmek istmediğimiz değerle için varsayılan bir durum ayarlayabiliriz.
Yukarıda vermiş olduğumuz örneği switch yapısı için yeniden düzenleyelim.

$nereden = 2;
switch($nereden)
{
case 1:
print "Tv Gazete ve dergi reklamlarından öğrendim.";
break;
case 2:
print "Arkadaşımdan duydum";
break;
case 2:
print "Arkadaşım mesaj yolladı";
break;
case 3:
print "Arama motorları yönlendirdi";
break;
case 4:
print "Tesadüfen sitenize girdim";
break;
} // Örneğimiz Arkadaşımdan duydum çıktısını vercektir.

bu deyim if else deyiminden farklı biçimde işler. if deyimi süslü parantezler kullanılmadığı takdirde, tek bir deyimi etkiler, switch ise bunun tam tersi biçimde davranır. switch deyimi içerisindeki case etkinleştirildiğinde, php bir break deyimine rastlayana kadar, deyimleri çalıştırmayı sürdürür. Bir break deyimi olmadan switch, doğru olan case' yi takip eden tüm kodlarımızı çalıştırır. Bir break deyimine gelindiğinde ise, switch deyiminden sonra gelen kod satırı çalıştırılır.
Yukarıdaki örnekte "Arkadaşımdan duydum" ifadesinin altında yer alan break deyimini kaldırıp kod parçamızı yeniden çalıştırırsanız;
"Arkadaşımdan duydum Arkadaşım mesaj yolladı"
çıktıları ile karşılaşırsınız.

Aşağıdaki örnekte bu konu ile ilgili bir örnek daha veriyorum. Lütfen $cevap değişkeni değerlerini değiştirerek kendi yerel sunucunuzda denemelerinizi yapınız.

<?php
$cevap = "h";
switch ($cevap)
{
case "e":
case "E":
print "Cevabınızı EVET olarak verdiniz.";
break;

case "h":
case "H":
print "Cevabınızı HAYIR olarak verdiniz";
break;
}// Çıktımız Cevabınızı HAYIR olarak verdiniz olacaktır.
?>

Gönderen _nl2br zaman: 03:10 0 yorum  

Diziler

22 Mayıs 2008 Perşembe

Php'de diziler, skaler değişkenlerin gruplanarak saklandıkları,bir anahtar ve bir değer çiftinde oluşan değişkenlerdir. Dizi içerisinde saklanan değerlere eleman, bu elemana erişim için kullanılan ilişkili indexine de anahtar deriz. Dizilerin sıfır yada bir'den başlayan sayısal indexleri vardır ve PHP birleşik dizileri de destekler ve dizi anahtarları sayısal veya string tipi verilerden oluşabilir. Php'de diziler print veya echo gibi birer fonksiyon olmayıp bir php yapısıdır.

Diziler; array(); biçiminde tanımlanırlar, ve içlerinde köşeli parantezlerle ayrılmış anahtar ve bun işaret eden veri tipleri bulunur:

array([anahtar =>] değer, [anahtar =>] değer, ...)

Faydaları:
Diziler ortak skaler değişkenleri gruplamamızı sağlar,
Dizileri kullanmakla bir bilgi grubunu, tek bir birim olarak hareket ettirebiliriz.

Sayısal indexli diziler;

Bu yapıda anahtar opsiyonel olmakla birlikte, dizi tanımlaması yapılırken php tarafından otomatik olarak (0) sıfırdan başlayarak artan değerler atanır(elle bir değer de verebilirsiniz).

array(1, 2, 3) yazmakla dizimizi array( 0 => 1, 1 => 2, 2 => 3) olarak ifade etmiş oluruz.
Bir diziyi bir diziye basitçe = (atama) operatörünü kullanarak kopyalayabiliriz.

<?php
$sayilar = array(1, 2, 3);
$veriler = array("sorento", "mazda", "ford");
$sayilar = $veriler; // Veriler dizimizi, sayılar dizimize kopyalıyoruz.
print_r ($sayilar); // Çıktımız; Array ( [0] => sorento [1] => mazda [2] => ford ) olacaktır.
?>

Eğer küçükten büyüğe bir sayı grubuna sahip dizi yaratmak istiyorsanız range() fonksiyonu ile bunu basitçe yapabiliriz.

$sayilar = range(1, 10);
print_r ($sayilar); // Burada dizimizi print_r fonksiyonumuzla ekrana bastırıyoruz.
/* Çıktımız :
* Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )
* Olarak yansıyacaktır.
*/

Dizi İçeriklerine erişim;

Bir dizi değişkenin içeriğine erişmek için, dizi değişkeni ve ilgili anahtarını veya indexini yazmamız yeterlidir. İndex köşeli parantezlerin içine dizi değişkenin adından hemen sonra yerleşir.

dizimiz $dizimiz = array("Mazda", "Ford", "Kia"); Olsun. Eğer Kia verisine ulaşmak istiyorsak; $dizimiz[2]; yazmamız yeterlidir. Yukarıda da anlattığım gibi dizilerin sayısal indexleri 0'dan başlar ve bizim dizimizdede dizinin ilk elemanı olan Mazda burada, indexi 0(sıfır) olan değerimizdir.
Diğer değişkenlerde olduğu gibi dizi değişkenlerinin elemanlarıda = (atama) operatörü kullanılarak değiştirelebilir.

$dizimiz[2] = "Toyota"; // Dizimizin Kia olan elamanını, Toyota olarak değiştirdik. Eğer dizimize yeni bir eleman eklemek istersek basitçe bir sonraki indekse yeni bir eleman atamakla bu işlemi yaparız.

$dizimiz[3] = "Opel"; // Artık dizimizde 4 eleman var.

Eğer dizi içeriğini tarayıcıya yansıtmak istiyorsak;

echo "$dizimiz[0] $dizimiz[1] $dizimiz[2] $dizimiz[3]"; Yazmamız yeterlidir.

Diğer Php Değişkenleri gibi, dizilerede önceden ilk değer verilmesi ya da önceden dizilerin yaratılması gerekmez. Diziler kullanmaya başladığımız anda otomatik olarak yaratılmış olurlar.

$dizimiz[0] = "Mazda";
$dizimiz[1] = "Toyota";
$dizimiz[2] = "Ford";
$dizimiz[3] = "Opel";

İşte size dört elamana sahip basit bir dizi. Eğer dizimiz adlı dizi değişkenimiz yoksa, ilk satırda dizimize Mazda değerini atamamızla birlikte otomatik olarak yaratılmış olur. Ardından gelen diğer verilerde otomatik olarak dizimize eklenirler.

Birleşik diziler;

Birleşik dizilerde dizi içerisinde yuvalanmış veriler bulunur. Aşağıdaki dizi değişkenimize bakalım.

$dizi_1 = array("isim" => "Mehmet", "Yas" => 30);
$dizi_2["isim"] = "Mehmet";
$dizi_2["Yas"] = 30;
if($dizi_1 == $dizi_2) {
print '$dizi_1 ve $dizi_2 benzerdir'; // Çıktımız
$dizi_1 ve $dizi_2 benzerdir olur.
}

Yukarıdaki kod parçamızda isim'in anahtar, Mehmet' in değer olduğu bir birleşik dizi yarattık. Birleşik bir dizide her bir değerle istediğimiz bir anahtar ya da indeksi ilişkilendirebiliriz.

Dizi değişkenlerindeki anahtarları kullanarakta verilere erişebiliriz.

$dizi_1 = array("isim" => "Mehmet", "Yas" => 30);
$dizi_2["isim"] = "Mehmet";
$dizi_2["Yas"] = 30;
print $dizi_2["isim"];
if ($dizi_2["yas"] <>Mehmet olgunluk yolunda ilerliyor" olacaktır.

Çok boyutlu diziler;

Dizilerimizin basit birer anahtar => değer çiftleri olmaları gerekmez. Dizideki her konumbaşka bir diziyi de barındırabilir. Böylece iki boyutlu bir dizi yaratmış oluruz. İki boyutlu bir dizi eni ve boyu olan bir matris veya satırları ve sütunları olan bir tablo gibi düşünülebilir.

$dizimiz = array(1 => array("isim" => "Mehmet", "yas" => 30), array("isim"=> "Orhan", "yas" => 27));
print $dizimiz[1]["yas"]; // Çıktımız 30 olacaktır.

Dizi içeriğine erişmek için döngülerden faydalanmak;

Dizi değişkenlerde değişken içeriklerine erişmek için farklı yollar vardır. Genellikle bir dizinin içeriğine erişmek için foreach döngüsünden yararlanılır. Foreach döngüsünün yapısı aşağıdaki gibidir:

foreach($dizimiz as [$anahtar =>] [&] değer);

Aşağıdaki örneğimizi inceleyelim.

$dizimiz = array("Mazda", "Toyota", "Opel", "Kia");
print "Araçlar : \n";
foreach ($dizimiz as $anahtar => $deger) {
print "#$anahtar = $deger \n";
}
// Çıktımız: Araçlar : #0 = Mazda #1 = Toyota #2 = Opel #3 = Kia gibi olacaktır.

Bir diğer kullanışlı yöntem ise list ve each yapısını kullanmaktır. Kendisi bir fonksiyon olan each(), bir dizideki geçerli elemanı döndürür ve yeni elemanı geçerli eleman yapar. Bu fonksiyonu bir while döngüsü içerisinde kullandığımızda, dizideki her elemanı sırayla döndürür.

$yaslar = array("Orhan" => 25, "Meral" => 23);
reset($yaslar);
$kisi = each($yaslar);
print "Kisi :";
print $kisi["key"];
print "Yaşı :";
print $kisi["value"];

Diğer fonksiyonumuz olan list(), fonksiyonuda, diziyi belirli sayıdaki değerlere bölmek için kullanılmaktadır ve elde edilen değişkenlere isim vermemizi sağlar. Yapısı aşağıdaki gibidir.

list($degisken1, $degisken2, ...) = $dizimiz;

ilk değişkenimiz olan $degisken1, dizimizdeki ilk pozisyon olan sıfır konumundaki değişkendir. İterasyona devam edildikçe, dizi içerisindeki pozisyon 1, 2, ve dizi sonuna kadar yer alan değişkenleri sırasıyla kullanımımıza sunar.

$degisken1 = $dizimiz[0];
$degisken2 = $dizimiz[1];

each() fonksiyonunu kullanırken dikkat edilecek bir nokta vardır. Aynı kod içerisinde fonksiyonu iki kez kullanmak istiyorsak, geçerli elemanı reset() fonksiyonu kullanarakdizinin başlangıcına ayarlamak gerekmektedir.

$kisiler = array("Mehmet", "Orhan", "Semih", "Meral");
reset($kisiler);
while (list($anahtar, $deger) = each($kisiler)) {
print "#$anahtar = $deger\n";
}
// Çıktımız : #0 = Mehmet #1 = Orhan #2 = Semih #3 = Meral olacaktır.

Dizilerde sıralama işlemleri;

Dizi içerisindeki verileri sıralamak çoğu zaman oldukça faydalıdır.

sort(); Fonksiyonunu kullanmak;

sort() fonksiyonu, kendisine geçirilen dizi içerisindeki elemanları alfabetik ya da sayısal olarak küçükten büyüğe doğru sıralar. Sıralama başarılı ise true, değilse false değer döndürür.

$kisiler= array("Meral", "Orhan", "Semih", "Halil");
sort($kisiler);
foreach($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}

sort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.sort.php ziyaret ediniz.

asort(); ve ksort() Fonksiyonlarını kullanmak;

Genellikle birleşik dizilerde kullanılırlar. asort() fonksiyonu her elemanı değerine göre sıralar. İşlem başarılı olduğunda true, başarısız olduğunda false değeri döndürür.

$kisiler= array("Meral" => 35, "Orhan" => 30, "semih" => 27, "Halil" => 40);
asort($kisiler);
foreach($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}
// Çıktısı
#semih = 27#Orhan = 30#Meral = 35#Halil = 40

Örneğmizde kişilerin yaşlarının küçükten büyüğe doğru sıralandığını gözlemleyebilirsiniz.

asort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.asort.php ziyaret ediniz.

Eğer dizi içeriğindeki elemanları değerine göre değilde anahtara göre sıralamak isteseydik, bunun için ksort() fonksiyonunu kullanmaya gerek duyardık. Bu foknksiyonumuzda başarılı olup olamama durumuna göre booolean bir değer gönderir. Bu değer başarılı ise true, başarısız ise false olacaktır.
Yukarıdaki örneğimizi ksort() fonksiyonumuzu kulanarak yineleyelim.

$kisiler= array("Meral" => 35, "Orhan" => 30, "semih" => 27, "Halil" => 40);
ksort($kisiler);
foreach ($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}
// Çıktımız alfabetik olarak sıralanarak #Halil = 40#Meral = 35#Orhan = 30#semih = 27 olarak tarayıcımıza yansıdı.

ksort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.ksort.php ziyaret ediniz.

Gönderen _nl2br zaman: 22:52 0 yorum  

Veri Tipleri

Php içinde kullanılan veri tiplerini bu başlık altında inceleyeceğiz

Gönderen _nl2br zaman: 22:46 0 yorum  

Operatörlerin Öncelik Sırası

Aşağıdaki tabloda Önceliği en yüksek olan operatörler ilk sırada olmak üzere kullandığımız tüm operatörler değerlendirme sıralarıyla birlikte dökülmüştür.


Gönderen _nl2br zaman: 18:46 0 yorum  

Diğer Operatörler

Virgül Operatörü;
Php'de virgül( , ) operatörü, fonksiyon argümanlarını,ve öğe listelerini birbirinden ayırmak için kullanılır.
Örneğin;
$unset($degisken1, $degisken2, $degisken3, $degiskenN);

new ve -> operatörü;


new operatörü php'de bir sınıfın örneğini oluşturmak için kullanılır,
-> operatörü ise, sınıfın üyelerine erişmek için kullanılmaktadır.

[] Dizi Operatörü;


Dizi operatörü ( [] ), bir dizi içindeki elemanlara ulaşmamızı sağlaması açısından oldukça yararlıdır. Örneğin;

$araclar = array("Mazda", "Toyota", "Renault", "Fiat"); Olsun. Ve ben Renault a ulaşmak isteyeyim. Burada dizi sıralaması sıfırdan başlayacağı için benim;
$araclar[2]; //yazmam yeterli olacaktır.

Ternary Operatörü;

Üçlü ifade operatörüdür. İf else karar kontrol yapısı gibi çalışır.
koşul ? true ise değer : false ise değer;
Örneğin;

($not > 65 ? "Geçtin" : "Kaldın");

Hata Bastırma Operatörü;


Hata bastırma operatörü olan ( @ ) operatörü, her ifadenin önünde kullanılabilir. Örneğin;
$x = @(100/0); // @ operatörü olmadan bu satır "sıfıra bölme uyarısı verecektir. Operatör kullanılıtken bu hata bastırılır.
Not: Eğer hata bastırma operatörü kullanıyorsanız, bir uyarının olup olmadığını anlamak için hata yakalama kodu yazmanız gerekecektir. Eğer php.ini dosyanızda track_errors özelliği etkin haldeyse, hata mesajı, global değişken olan, $php_errormsg içinde saklanacaktır.

Çalıştırma Operatörü;

Çalıştırma operatörü ( `` ) -execution operatörü- sıkça tek tırnak ile karıştırılır. Çoğunlukla klavye üzerinde,~ ile veya (; ile aynı yerde bulunur. Php bu tırnaklar arasında kalan herşeyi,sunucunun komut satırındaki bir komut gibi çalıştırmak ister.
örneğin windows sunucusu üzerinde;
$dizin = `dir c:`;
print "<pre>".$dizin."</pre>"; // Çıktımız bi dizin listesi barındıracakve bunu $dizin değişkenimiz içinde saklayacaktır.

Bitwise Operatörleri;

Bir tamsayıyı, onu temsil etmek için kullanılan bir bit serisi olarak ele almamızı sağlarlar.


Gönderen _nl2br zaman: 17:31 0 yorum  

Mantıksal Operatörler

Php'de mantıksal operatörler, mantıksal koşulların sonuçlarını birleştirme için kullanılırlar. Elimizdeki değişkenin olası değerlerini saptamamızı kolaylaştırırlar.
Örneğin elimizde değeri 0 ile 100 arasında olabileceği bir durum düşünelim:

$x >= 0 && $x <= 100; // Burada mantıksal ve operatörünü kullanarak değişken değerimizin 0 ile 100 arasında bir değer alıp almadığını kontrol edebiliyoruz.


Burada dikkat etmemiz gereken durum, and ve or operatörlerinin öncelikeleri, türdeşleri olan, && ve || operatörlerinden daha düşüktür.

Gönderen _nl2br zaman: 17:18 0 yorum