PHP dizileri (Array)
Dizileri tanım olarak kısaca daha önceden öğrendiğin değişkene birden fazla değer atamak ve atadığın değerleri sırayalayıp, çoklu verilere rahat müdahale etmeni sağlayan veri tipleri diyebilirim.
Değerleri bir kategori altında toplamak ya da daha dinamik değişkenler oluşturmak için diziler idealdir. Örneğin sadece bir $uyeler değişkeninde yüzlerce kullanıcının verilerine ulaşıp değişiklikler yapabiliriz.
Dizilerin kullanımı, oluşturulması ve değiştirilmesi gayet basit aynı zamanda bunların birden fazla da yolu var.
Dizi (Array) oluşturma
İster Array() fonksiyonunu kullanarak istersen de fonksiyon kullanmadan dizi oluşturabilirsin.
İlk olarak Array() fonksiyon ile oluşturmayı göstereyim:
$meyveler = array("Elma", "Armut", "Muz", "Kiraz");
$meyveler dizisine array() fonksiyonuyla 4 tane değer atadık.
Aynı işlemi fonksiyon kullanmadan yapalım:
$meyveler[0] = "Elma"; $meyveler[1] = "Armut"; $meyveler[2] = "Muz"; $meyveler[3] = "Kiraz";
Fonksiyonsuz yöntemde aslında dizinin nasıl sonuç verdiği ortaya çıkmış oluyor.
Üstteki Array() fonksiyonu ve fonksiyonsuz şekilde oluşturduğumuz dizilerde aynı işlemi yaptık.
Array() fonksiyonu ile oluşturduğumuz bu dizide her bir değerin anahtarı sayısal olur, yani anahtarlar 0, 1, 2, 3, … şeklinde gider. Yukarıdaki $meyveler dizisinin 0. anahtarının değeri Elma, 1. anahtarının değeri ise Armut olur.
Array() fonksiyonu ile anahtarları sayısal olmayan ve kendi istediğin gibi olacak olan diziler oluşturmak için ise şu yöntemi uygulamalısın:
$meyveler = array('bir' => 'Elma', 'iki' => 'Armut', 'üç' => 'Muz');
Burada anahtarlarını kendim belirtmiş oldum. Aynısını bir de Array fonksiyonunu kullanmadan yapayım:
$meyveler['bir'] = 'Elma'; $meyveler['iki'] = 'Armut'; $meyveler['üç'] = 'Muz';
Bu da bir önceki örneğin fonksiyonsuz tanımlanmış hali.
Dizilerde bir adet anahtara ve sonrasında her anahtar için bir değere ihtiyacın var. Burada anahtar olan kısım ve değer olan kısmı şu şekilde göstereyim:
$dizi["anahtar"] = "değer";
Anahtar olan kısıma ister sayı istersen de yazı girebilirsin. Sıralamalar için ideal olan dizi anahtarı sayılardır. Sayı anahtarlar ile dizilerde daha rahat çalışabilirsin.
Dizileri kullanmak
Bir dizi oluşturduktan sonra onu oluşturduğun gibi kullanıp, değiştirebilirsin. Hemen örnek ile açıklayayım:
$meyveler[0] = "Elma"; $meyveler[1] = "Armut"; echo $meyveler[0];
Ekranda Elma yazar.
Dizileri değiştirmek
$meyveler[0] = "Elma"; $meyveler[0] = "Portakal"; echo $meyveler[0];
Ekranda Portakal yazar. Çünkü $meyveler dizisinin 0. anahtarının değeri Elma iken sonraki satırda Portakal olarak değiştirdik.
Hep sayısal anahtarlar ile gösterdik, şimdi bir de yazılı anahtarlar ile göstereyim:
$misafir["isim"] = "Musa"; $misafir["yaş"] = 18; $misafir["il"] = "İstanbul"; echo 'Misafirin ismi ' . $misafir["isim"] . ', yaşı ' . $misafir["yaş"] . ', ili ise ' . $misafir["il"] . '.';
Ekranda Misafirin ismi Musa, yaşı 18, ili ise İstanbul. yazar.
İç içe dizi tanımlamak
Bir dizi oluşturduktan hemen sonra o dizinin içine sonsuza kadar daha dizi oluşturabiliriz. Aynı alt kategori mantığı gibi düşünebilirsin. Yine bunu ister fonksiyon ile istersen de bodoslama olarak yapabilirsin:
$yemek["tatlı"] = array("pasta", "kurabiye", "şeker"); $yemek["acı"] = array("biber", "acılı adana", "meksika sosu"); echo 'Ben ' . $yemek["tatlı"][0] . ' yedim';
Ekranda Ben pasta yedim yazar. Burada olduğu gibi istediğin kadar içe içe dizi oluşturabilirsin. Bir de fonksiyon kullanmadan göstereyim:
$yemek["tatlı"][0] = "pasta"; $yemek["tatlı"][1] = "kurabiye"; $yemek["tatlı"][2] = "şeker"; $yemek["acı"][0] = "biber"; $yemek["acı"][1] = "acılı adana"; $yemek["acı"][2] = "meksika sosu"; echo 'Ben ' . $yemek["tatlı"][0] . ' yedim';
Dizi silmek
Oluşturduğun dizilerden birini eksiltmek ya da tamamını yok etmek için değişkenleri yok etmekte kullandığımız unset() fonksiyonunu kullanıyoruz. İşin aslı bu fonksiyon tüm değişken tiplerini yok etmekte kullanabilirsin.
$meyveler[0] = "Elma"; $meyveler[1] = "Armut"; // sadece bir diziyi silmek için: unset($meyveler[0]); // tamamını silmek için: unset($meyveler);
Dizinin tümünü yazdırmak
Eğer biz gerçekten bir diziyi olduğu gibi tüm içindekilerle ekrana yazdırmak istiyorsak print_r() fonksiyonunu kullanacağız. Bu bize içine yazdığımız dizinin sahip olduğu tüm anahtarları ve değerlerini gösterir:
$renkler = array("mavi", "turuncu", "yeşil"); print_r($renkler);
Ekranda şöyle bir çıktı belirir:
Array ( [0] => mavi [1] => turuncu [2] => yeşil )
Dizi yaptığınız bir değişkeni herhangi bir anahtar kullanmadan direkt olarak hep kullandığımız ekrana yansıtma fonksiyonu olan echo ile ekrana yazamıyoruz.
Çünkü adı üstünde dizi birden fazla değere sahip olduğu için tek başına yazdırmaya kalktığınızda “Array” şeklinde sonuç alırsın. Hemen bunun nasıl olacağını da göstereyim:
$renkler = array("mavi", "turuncu", "yeşil"); echo $renkler;
Bir diziyi herhangi bir anahtarını belirtmeden yazdırmaya çalıştığımız için ekranda uyarı babında yalnızca Array yazar.
Dizilerin eleman sayısını bulmak
Bir dizide kaç eleman olduğunu saymak için count() fonksiyonunu kullanıyoruz. Hemen basit bir örnek ile göstereyim:
$renkler = array("mavi", "turuncu", "yeşil"); echo count($renkler);
Ekranda 3 yazar. Çünkü $renkler dizinin 3 elemanı var.
Dizileri sıralama
Dizileri 2 alanda sıralayabiliyoruz. Birincisi anahtara göre sıralama, diğeri ise değerlere göre sıralama. Bunlarında bir miktar fonksiyonlar ile yapıyoruz.
Tüm sıralama fonksiyonlarını bir liste halinde yazayım ve bir örnek ile açıklayayım:
Fonksiyon | Açıklaması |
sort() | Değere göre küçükten büyüğe sıralar. Anahtarıyla olan ilişkisini bozar. |
rsort() | Değere göre büyükten küçüğe sıralar. Anahtarıyla olan ilişkisini bozar. |
asort() | Değere göre küçükten büyüğe sıralar. Anahtarıyla olan ilişkisini bozmaz. |
arsort() | Değere göre büyükten küçüğe sıralar. Anahtarıyla olan ilişkisini bozmaz. |
ksort() | Anahtara göre küçükten büyüğe sıralar. |
krsort() | Anahtara göre büyükten küçüğe sıralar. |
Örnek:
$kelimeler = array("cam", "araba", "balon"); sort($kelimeler); print_r($kelimeler);
Çıktısı:
Array ( [0] => araba [1] => balon [2] => cam )
Otomatik tanımlanmış diziler
PHP kodları çalıştırdığında sayfaya otomatik olarak bir takım fonksiyonların tanımlandığı gibi bazı değişkenlerde tanımlanır.
İçinde kodun çalıştığı sayfanın konumunu, tarihi, sunucunun IP adresini, giren kişinin IP adresini ve bunun gibi daha bir çok veriyi bize ileten bazı değişkenler oluşturur. Bunlara genel olarak “Global değişkenler” diyoruz. Tanımlanan global değişkenler dizi olarak tanımlanır ve bir değişken ile bir çok değeri bize gönderir.
$_SERVER global dizisi
Bu global değişkenlerin en başında $_SERVER geliyor. Adı üstünde içinde server verilerine ve sayfaya giren ziyaretçilerin IP adresi, browser verileri gibi değerlerine ulaşabiliyoruz.
$_SERVER dizinin tüm değerlerini ele almak için hemen onu print_r() ile ekrana yazdırarak neyin ne olduğunu belirteyim:
Not: Anlatma gereği duymadığım ve senin henüz kullanmaya ihtiyacın olmayacak olan bazı değerleri atladım.
Array ( [HTTP_USER_AGENT] => Ziyaretçinin browser bilgileri [SERVER_NAME] => Serverin adı [SERVER_ADDR] => Server IP adresi [SERVER_PORT] => Server portu [REMOTE_ADDR] => Ziyaretçinin IP adresi [DOCUMENT_ROOT] => Dosyanın ana dizini [SCRIPT_FILENAME] => Çalışan scriptin dizi adresi [REQUEST_URI] => Şu an hangi adreste olduğu [SCRIPT_NAME] => Çalışan dosyanın adı [PHP_SELF] => Burası da çalışan dosyanın adı [REQUEST_TIME] => Şu anki zaman )
$_POST, $_GET, $_COOKIE, $_SESSION global dizileri
Bu dizileri PHP from kullanımı ve örnekleri, PHP Cookie ve PHP Session başlıkları altında detaylı bir şekilde ele aldık.
Dizileri nerede kullanabilirim?
Bu konuda kafanda kullanımı hakkında biraz daha fazla şey canlanması için bir örnek daha verebilirim. Mesela benzer türde verileri tek bir değişkene koyarak tek bir değişken ile tüm ihtiyaç duyduğun verilere ulaşabilirsin:
$mesaj["baslik"] = "Selam Dünya!"; $mesaj["icerik"] = "Selamlar, bu sadece PHP'de dizileri daha iyi anlamamız için bir örnek"; $mesaj["yazar"] = "Musa"; $mesaj["tarih"] = "27 Mayıs 2010 Perşembe";
Gördüğün gibi sadece $mesaj değişkeni ile bir mesajın tüm verilerini ayrı ayrı ve düzenli bir şekilde tutmuş oldum.
Bir sonraki PHP dersinde ve bir başka serüvende görüşmek üzere hoşçakalın.
Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.
güzel yazı olmuş
devamını bekliyoruz 🙂
not: okuduysanız en azından okudum diye bi yorum atın 🙂
Okudum. Fakat bilgiler az.
Teşekkürler
okudum, okuyorum ve lazım oldukca okuyacagım:) kısa ve oz.. emegine saglık ustat
Okudum
Yalnız büyük bir sürç-i lisan etmişim. Dizin değil dizi olacaktı. Hemen düzelttim, kusura bakmayın (:
array_sum() Var birde array fonksiyonlarından sizin verdikleriniz dışında kullandığım tek bu nerde kullandım hatırlamıyorum ama aklımda kalmış.Dizi değişkenlerdeki sayısal değerlerin toplamını bulmaya yarıyor.Yazı yine harika..(Elimden geldiğince az olan bildiklerimi katmaya çalışıyorum.)
Görkem başlangıç seviyesinde temel şeylerden bahsettim. İlerde onlarıda anlatacağım
[…] forma yazdıkları değerleri burada bahsettiğimiz $_GET, $_POST ve $_REQUEST global dizileri aracılığyla PHP'de bir değişkene […]
hocam bu güzel anlatımınız için size minnettarım….devamını sabırsızlıkla bekliyorum.
güzel bir çalışma olmuş, değişik kaynaklardan çalışıyordum, burdanda faydalanacağız gözüküyor, güzel olmuş, ileride bizde böyle bir site yapmamız dileğiyle yardımlarının ve güncel bilgilerinin devamını bekliyoruz,
Yazınız gerçekten güzel olmuş teşekkürler. Ayrıca alışveriş scriptimde kullandığım bir fonksiyonu da ben belirteyim. array_merge sayesinde bir diziye yeni bir dizi ekleyebiliriz. Ben sepet uygulamasında bu şekilde sepete yeni bir ürün ekletiyorum. Sizce doğru bir kullanım mıdır?Yoksa başka bir yolu da varmıdır?
bir işlemi yapmanın nerdeyse sonsuz yolu var, önemli olan sizin işleyişinizin geneline en uygun ve en performanslısını seçebilmek.
bu durumda array_merge fonksiyonu da bir alternatif sayılabilir ve işinizi görüyorsa uygundur. çok daha doğru cevap verebilmem için çalışma şeklini görmemiz gerekir ama çok mühim olmadığını sanıyorum.
teşekkürler, mutlu kodlamalar.
güzel bir çalışma olmuş teşekkürler
Emek vermişsiniz, teşekkür etmeden geçmek istemedim.
Merhaba Hocam,
Anlatım ve örneklendirmeleriniz çok güzel.Emeğinize sağlık.
çok faydalı bir yazı olmuş.
Teşekkürler,faydalı bir yazı olmuş
Gerçekten çok faydalı bir site.Php adına unutulan şeyleri kolayca bulup tekrar hatırlayabiliyoruz. Phpr.org ‘ un her zaman yayında olmasını ve bu başarısının devamını diliyorum.Teşekkürler.
Bu güzel ve sade anlatım için teşekkürler 🙂 Okumaya korktuğum dizi bölümünü sayende çözmüş oldum hocam. Emeğine sağlık 🙂
$kelimeler = array(“cam”, “araba”, “balon”);
sort($kelimeler);
print_r($kelimeler);
Çıktısı:
Array
(
[0] => araba
[1] => balon
[2] => cam
)
Bu örnekte bir hata yokmu doğru sıralama cam-araba-balon olması gerekmiyor mu? dizinin 0 elemanı cam değil mi?
“sort” fonksiyonu değere göre küçükten büyüğe doğru sıralıyor; dizinin elemanları yazı olduğu için alfabetik olarak küçükten büyüğe göre sıralıyor. anahtarına göre sıralayan fonksiyon “ksort”
hmm tamam o noktayı kaçırmışım. Bu vesile ile Teşekkür etmek de isterim sitenizden çok faydalandım ve faydalanmaya da devam ediyorum. php dersleri alanında Türkçe olarak en derli toplu site bence.
Ellerine emeğine sağlık.
Cok sade ve güzel anlatım.. yüreğine sağlık..
bir süredir çalışma konum olarak php önümde duruyor mantığını kavramada zorlanıyordum yardımcı olacak kimsede yoktu fakat anlatımlarınızla çabucak öğreniyorum
Sınav öncesi çok işime yaradı. Teşekkürler emeğine sağlık.
Kardeşim makalelerin baştan sona güzel php programcsıyım kendimi geliştirmek ve eskileri hatırlamak niyetine buraya geldim başarılar.
Emeğinize sağlık.Ben bir şey sormak istiyorum.
Kullanıcı URL’den sayı gönderecek, bu sayı dizi değişken içinde mevcut ise mevcut olduğunu ve kaç adet bulunduğunu yazan programı yapmaya çalıştım ancak yapamadım.Programı yazarsanız sevinirim.Şimdiden teşekkür ederim.İyi çalışmalar…
$sayi=$_GET[‘sayi’];
$dizi=array(10,20,30,10,50,30,10,50,60);
Eda şu şekilde sonuca gidebilirsin.
$sayi = $_GET[‘sayi’];
$dizi = array(’10’,’20’,’30’,’10’,’50’,’30’,’10’,’50’,’60’);
$count = 0;
foreach ($dizi as $key => $value) {
if($value==$sayi)
{
$count++;
}
}
echo $sayi.’ sayısından ‘.$count.’ adet var.’;
PHP öğrenmeye ilk bu siteden başlıyorum .. dersleri ayrıca not alıyorum, her yapılanı deniyorum .. buradaki ilk örneği denerken şunu yazdım ..
/*
*/
Ekrana array bastı.. Ekrana Elma, Armut , muz , kiraz basması için ne yapmam lazım ?
yani yazmış olduğum dizi yi ekrana basmak için echo komutunu nasıl kullanırım ?
yorum kısmına yazılan php kodları maalesef otomatik siliniyor, bunun için “code” etiketlerini kullanın ya da kodunuzu pastebin.com adresine yükleyip linkini paylaşın. Kolay gelsin
Yazınızı çok beğendim. İşime çok yaradı, ellerinize sağlık 😀
Yazınızı çok beğendim. İşime çok yaradı, ellerinize sağlık. 😀
Emeğinize sağlık, çok güzel bir çalışma olmuş..
Yazıyı okudum ve çok beğendim. Ayrıca php de öğrenmek istediğim bir şey olduğunda ilk ziyaret ettiğim sitelerden birisi.
Emeğinize sağlık, çok güzel bir çalışma olmuş..
Gerçekten Başarılı Sınıflara Yönelik Olarak Tanımlanırsa Daha Yararlı Olur
İyi Kodlamalar
ben ahmet performans ödevim php de dizin işlemleri ama bişey bulmadım nedir
birazdan sınavım var ve sitede tam istediklerim mevcut.Teşekkürler gerçekten güzel bir bite bu alanda en iyi TR kaynak bence.
Çok çok çok teşekkür ederim, öncedende php ögrenmeye karar vermiştim ama çok karışık sanıp bıkmıştım taa ki bu siteyi bulana kadar 🙂 o kadar güzel anlatıyorsunuz ki insan istemese bile okuymak zorunda hissediyo kendini 🙂 inş bu sitede öğrencem php dilini 🙂
çok güzel bir sayfa emeklerinize saglık
Okudum
benim aklıma şu takıldı unset($meyveler[0]) yazdığımız zaman 0ıncı eleman silinince 1. eleman otomatik olarak onun yerine mi geçiyor bu şekilde bir kayma gerçekleşiyor mu? teşekkür ederim
sizin de farkettiğiniz gibi kayma gerçekleşmiyor. elemanları sildikten sonra tekrar sıralamak için sıralama fonksiyonlarını kullanabilirsiniz
2 gündür nette arıyorum. Bütün siteler örneğin sizin sitede ” $uyeler değişkenini array içine çağırabiliriz demekte. ama kimse buna örnek vermemiş. Yani $meyveler = array( $uyeler”); yeterli mi? örnek verirseniz sevinirim. şimdiden teşekkür ederim
İyi niyet ile gelen iyi çalışmalar olarak değerlendirdiğim bu paylaşımlar için sizin üzerinizden herkese teşekkür etmek isterim..
Saygılarımla
çok güzel bir anlatımınız var.. ellerinize sağlık.. gördüğüm en güzel anlatım şekli… Teşekkürler emeğinize sağlık…
Merhabalar, oluşturduğum bir dizi ile önce girilen karakterleri değiştiriyorum; misal $degisken(‘a’ => ‘1’, ‘b’ => ‘2’,) bu şekilde harfleri rakamlar ile değiştiriyorum daha sonra bu değiştirilen sayıların toplanması için nasıl bir yol izlenebilir,?
arkadaslar cok guzel bir yazı olmus
Çok faydalı bir makale olmuş elinize sağlık 🙂
Değişken içindeki verileri toplamak için foreach ile bir döngü oluşturabilirsin. Bu arada güzel bi makale olmuş. Elinize sağlık
güzel bir yazı olmuş
Siteniz ve anlatımlarınız çok başarılı. Php’ye sizin anlatımlarınız ile başladım ve inşallah devamı da gelecek.
Bir sorum olacak size.
1. echo komutu ile türkçe karakterli bir yazıyı yazdırdığımda ekranda türkçe karakterler çıkmıyor. sebebi nedir?
2. örneğin print_r($_SERVER); yazıp local host da çalıştırınca sizin çıktınız gibi alt alta değil sıralı şekilde yanyana yazıyor server bilgilerini. Yardımcı olabilir misiniz?
Teşekkürler.
Bu arada 1 soru dedim 2 sormuşum 🙂
Php öğrenmeyi kafaya koydum bir çok siteden farklı dökümanlar okuyorum ve sizin sitenizi de tekrar tekrar ziyaret ediyorum. Php konusundaki en önemli problemim bir türlü mantığını kuramamaktı ve bir aydan fazla zaman geçmiş başlayalı henüz yeni yeni toparlayabiliyorum kafamı. Ben biraz sabırsız bir adamım ve kendimi zorluyorum sabretmek için, eğer mantığını çözebilirsem çok güzel şeyler yapabileceğime inanıyorum. Vermiş olduğunuz emek için çok teşekkür ediyorum, Allah razı olsun hocam 😉
Çokta İyi Olmus Cokta Güzel Olmus Hoca Efsane Azcık Mizah Kattımı Varya Müthis Olur
Elinize sağlık, güzel ve yalın anlatım böyle olsa gerek.
en yalın anlatım tarzı bu işte
Çok güzel anlatımınız var gerçekten sağolun. Fakat bu yazıma cevap bekliyorum : Ben yeni öğrenmeye başladım ve önceden az da olsa programlama biliyordum yani anlayabiliyorum. Aslında çevremden aldığım görüşlere göre bunlar çok basit dersler. Bir uygulama üzerinden gidip tüm fonksiyonları,değişkenleri vs. kullanıp bir proje yaparsak basit olsa da olur daha iyi anlarız diye bir fikir verdiler. Yani bunlar tabi iyi anlatım var ama basit gibi. Yani bir wp sayfasını açarsanız bunlardan daha üst düzey ve karışık kodlar olduğunu görebilirsiniz. Bildiklerinizi biraz da videoya dökerseniz daha iyi olur diye tahmin ediyorum. Sonuç olarak şöyle kapatayım yazımı , ben bir ufak proje gibi bir şey istiyorum öyle daha iyi anlayacağımı umut ediyorum. Gerçekten bu konuda bilen varsa yardımcı olursa sevinirim. iyi çalışmalar herkese.
harika bir site emeği geçen herkese teşekkürler
Bir sorum olacak
25 ile 80 arası rastgele sayıların atandığı bir dizi nasıl olusturulur???
merhaba
merhaba
Merhaba siteniiz çok yararlı buluyorum php hakkında çoğu şeyi sizden öğreniyorum; bi konuda yardıma ihtiyacım var yazmış olduğum bir site kodlamasında dizilerde bug oluşma ihitmali var bugun oluşmaması için dizi içindeki her elemandan sadece 1 adet olması gerekiyor bunu yapabilecek bir fonksiyon var mı?
evet, array_unique fonksiyonu; http://php.net/manual/tr/function.array-unique.php
Array_merge (dizileri birleştirir) fonksiyonunu kullanmadan bu fonksiyon ile aynı görevi yapan programı nasıl yazabilirim
Sitenin hala aktif olması beni şaşırttı uzun zamandır siteyi takip ediyorum burda yazılan bir “Echo” mereti sayesinde şuan da php coderı oldum ardından bunu html,css,jquery,asp ve C# ile süsledim Tebrikler Musa Bey bir öğrencinin hayatını kurtardınız size minnetarım 🙂
Teşekkür ederim
Teşekkürler..
Tesekkurler
Tesekkur ederim emeklerine saglık
ellerinize sağlık
Emeğinize sağlık, çok güzel bir çalışma olmuş..
Dizilerde herhangi bir anshtarı unset(); ile kullandığım halde tümünü yazdırdığımda hepsi çıkıyor.