Merhaba Webkolog dostlarım!
Daha önceki makalelerimde PHP'de değişkenlerden ve dizilerin temel kullanımından bahsetmiştim. Bugün ise bu konuyu bir adım ileri taşıyor ve PHP'nin bize sunduğu zengin dizi fonksiyonları kütüphanesini keşfe çıkıyoruz. Bu fonksiyonlar, diziler üzerindeki çeşitli işlemleri (sıralama, arama, birleştirme, bölme ve daha fazlası) çok daha kolay ve verimli bir şekilde yapmamızı sağlar. Dizi fonksiyonlarını etkili bir şekilde kullanmak, kodunuzu daha temiz, anlaşılır ve güçlü hale getirir. Hadi gelin, bu kullanışlı araçlara yakından bakalım!
Temel Dizi Oluşturma ve Bilgi Alma
Dizi oluşturmanın temellerini zaten biliyorsunuz, ama hatırlatmakta fayda var. Ayrıca dizinizin kaç elemanı olduğunu öğrenmek de oldukça önemli.
<?php
// Bir dizi oluşturma
$meyveler = array("Elma", "Armut", "Çilek", "Muz");
$notlar = array("Ali" => 85, "Veli" => 92, "Ayşe" => 78);
// Dizinin eleman sayısını döndürür: count()
echo "Meyveler dizisinde " . count($meyveler) . " eleman var.<br>"; // Çıktı: 4
// Dizinin mevcut işaretçisindeki değeri döndürür: current()
echo "Meyveler dizisinin ilk elemanı: " . current($meyveler) . "<br>"; // Çıktı: Elma
// Dizinin son elemanını döndürür: end()
echo "Meyveler dizisinin son elemanı: " . end($meyveler) . "<br>"; // Çıktı: Muz
// Dizideki işaretçiyi başa getirir: reset()
reset($meyveler);
echo "İşaretçi sıfırlandıktan sonra ilk eleman: " . current($meyveler) . "<br>"; // Çıktı: Elma
?>
Dizi Elemanlarını Ekleme ve Silme
Diziler dinamiktir, yani eleman ekleyebilir veya çıkarabilirsiniz. İşte bu işlemleri kolaylaştıran fonksiyonlar:
<?php
$liste = array("A", "B", "C");
// Dizinin sonuna bir veya daha fazla eleman ekler: array_push()
array_push($liste, "D", "E");
echo "array_push sonrası: " . implode(", ", $liste) . "<br>"; // Çıktı: A, B, C, D, E
// Dizinin sonundan bir eleman siler ve onu döndürür: array_pop()
$silinenSonEleman = array_pop($liste);
echo "array_pop sonrası: " . implode(", ", $liste) . ", Silinen: " . $silinenSonEleman . "<br>"; // Çıktı: A, B, C, D, Silinen: E
// Dizinin başına bir veya daha fazla eleman ekler: array_unshift()
array_unshift($liste, "Z", "Y");
echo "array_unshift sonrası: " . implode(", ", $liste) . "<br>"; // Çıktı: Z, Y, A, B, C, D
// Dizinin başından bir eleman siler ve onu döndürür: array_shift()
$silinenIlkEleman = array_shift($liste);
echo "array_shift sonrası: " . implode(", ", $liste) . ", Silinen: " . $silinenIlkEleman . "<br>"; // Çıktı: Y, A, B, C, D
?>
Dizileri Sıralama Fonksiyonları
Dizilerdeki elemanları belirli bir düzene sokmak, veri analizi veya sunum için çok önemlidir. PHP, hem değerlere hem de anahtarlara göre sıralama yapabileceğiniz çeşitli fonksiyonlar sunar:
<?php
$sayilar = array(5, 2, 8, 1, 9);
$meyveler = array("elma", "çilek", "armut", "muz");
$notlar = array("Ali" => 85, "Veli" => 92, "Ayşe" => 78);
echo "<h5>Sıralama Öncesi:</h5>";
echo "Sayılar: " . implode(", ", $sayilar) . "<br>";
echo "Meyveler: " . implode(", ", $meyveler) . "<br>";
echo "Notlar: <pre>" . print_r($notlar, true) . "</pre>";
// Değerlere göre küçükten büyüğe sıralar: sort()
sort($sayilar);
echo "<h5>sort() sonrası Sayılar:</h5>";
echo implode(", ", $sayilar) . "<br>"; // Çıktı: 1, 2, 5, 8, 9
// Değerlere göre büyükten küçüğe sıralar: rsort()
rsort($meyveler);
echo "<h5>rsort() sonrası Meyveler:</h5>";
echo implode(", ", $meyveler) . "<br>"; // Çıktı: muz, elma, çilek, armut (alfabetik ters sıra)
// İlişkisel dizide değerlere göre küçükten büyüğe sıralar (anahtar ilişkisi korunur): asort()
asort($notlar);
echo "<h5>asort() sonrası Notlar:</h5>";
echo "<pre>" . print_r($notlar, true) . "</pre>";
/* Çıktı:
Array
(
[Ayşe] => 78
[Ali] => 85
[Veli] => 92
)
*/
// İlişkisel dizide değerlere göre büyükten küçüğe sıralar (anahtar ilişkisi korunur): arsort()
arsort($notlar);
echo "<h5>arsort() sonrası Notlar:</h5>";
echo "<pre>" . print_r($notlar, true) . "</pre>";
/* Çıktı:
Array
(
[Veli] => 92
[Ali] => 85
[Ayşe] => 78
)
*/
// Anahtarlara göre küçükten büyüğe sıralar: ksort()
ksort($notlar);
echo "<h5>ksort() sonrası Notlar:</h5>";
echo "<pre>" . print_r($notlar, true) . "</pre>";
/* Çıktı:
Array
(
[Ali] => 85
[Ayşe] => 78
[Veli] => 92
)
*/
// Anahtarlara göre büyükten küçüğe sıralar: krsort()
krsort($notlar);
echo "<h5>krsort() sonrası Notlar:</h5>";
echo "<pre>" . print_r($notlar, true) . "</pre>";
/* Çıktı:
Array
(
[Veli] => 92
[Ayşe] => 78
[Ali] => 85
)
*/
// Dizinin elemanlarını rastgele sıralar: shuffle()
$orijinalMeyveler = array("Elma", "Armut", "Çilek", "Muz");
shuffle($orijinalMeyveler);
echo "<h5>shuffle() sonrası Meyveler:</h5>";
echo implode(", ", $orijinalMeyveler) . "<br>"; // Her çalıştırmada farklı bir sıra
// Kullanıcı tanımlı fonksiyonla sıralama: usort()
// Bu fonksiyon, PHP 5.2'de karmaşık nesneleri veya özel kriterleri sıralamak için kullanışlıdır.
// İlk parametre dizi, ikinci parametre karşılaştırma yapacak fonksiyonun adı (string olarak).
function kiyaslaUzunluk($a, $b) {
if (strlen($a) == strlen($b)) {
return 0;
}
return (strlen($a) < strlen($b)) ? -1 : 1;
}
$kelimeler = array("kırmızı", "mavi", "yeşil", "sarı");
usort($kelimeler, 'kiyaslaUzunluk');
echo "<h5>usort() ile uzunluğa göre sıralanmış kelimeler:</h5>";
echo implode(", ", $kelimeler) . "<br>"; // Çıktı: mavi, sarı, yeşil, kırmızı
?>
Dizilerde Arama ve Kontrol Fonksiyonları
Bir dizide belirli bir değerin veya anahtarın olup olmadığını kontrol etmek, veya aradığınız değerin konumunu bulmak için bu fonksiyonları kullanabilirsiniz:
<?php
$urunKodlari = array("TR101", "TR102", "TR103", "TR104");
// Bir değerin dizide varolup olmadığını kontrol eder: in_array()
if (in_array("TR102", $urunKodlari)) {
echo "TR102 kodu dizide mevcut.<br>";
}
// Bir değerin dizideki anahtarını (ilk bulunduğu) döndürür: array_search()
$anahtar = array_search("TR103", $urunKodlari);
if ($anahtar !== false) { // false kontrolü önemlidir!
echo "TR103 kodunun anahtarı: " . $anahtar . "<br>"; // Çıktı: 2
}
// Verilen anahtarın dizide varolup olmadığını denetler: array_key_exists()
if (array_key_exists("TR101", $urunKodlari)) { // Sayısal anahtarlar için de geçerli
echo "TR101 anahtarı dizide mevcut.<br>";
}
$kullanicilar = array("admin" => true, "ziyaretci" => false);
if (array_key_exists("admin", $kullanicilar)) {
echo "admin anahtarı mevcut.<br>";
}
?>
Dizi Dönüşüm ve İşleme Fonksiyonları
Dizileri farklı biçimlere dönüştürmek veya özel işlemler yapmak için kullanılan diğer faydalı fonksiyonlar:
<?php
$harfler = array("a", "b", "c", "d");
$sayilar = array(10, 20, 30, 40);
// Diziyi belirli bir ayırıcı ile string'e dönüştürür: implode()
$birlesikMetin = implode("-", $harfler);
echo "implode sonrası: " . $birlesikMetin . "<br>"; // Çıktı: a-b-c-d
// String'i belirli bir ayırıcıya göre diziye böler: explode()
$stringMetin = "elma,armut,muz";
$ayrilmisMeyveler = explode(",", $stringMetin);
echo "explode sonrası ilk eleman: " . $ayrilmisMeyveler[0] . "<br>"; // Çıktı: elma
// Dizideki tüm sayısal değerleri toplar: array_sum()
echo "Sayılar dizisinin toplamı: " . array_sum($sayilar) . "<br>"; // Çıktı: 100
// Diziyi, vereceğiniz boyuta göre yeni dizilere böler: array_chunk()
$buyukDizi = array(1, 2, 3, 4, 5, 6, 7, 8);
$bolunmusDizi = array_chunk($buyukDizi, 3);
echo "array_chunk sonrası (ilk alt dizi): " . implode(", ", $bolunmusDizi[0]) . "<br>"; // Çıktı: 1, 2, 3
// Bir dizinin anahtarlarını, diğerinin değerlerini alarak yeni bir dizi oluşturur: array_combine()
$anahtarlar = array("ad", "soyad", "yaş");
$degerler = array("Ahmet", "Yılmaz", 30);
$kisiBilgisi = array_combine($anahtarlar, $degerler);
echo "array_combine sonrası: <pre>" . print_r($kisiBilgisi, true) . "</pre>";
/* Çıktı:
Array
(
[ad] => Ahmet
[soyad] => Yılmaz
[yaş] => 30
)
*/
// Bir dizideki her bir benzersiz değerin kaç kez görüldüğünü sayar: array_count_values()
$tekrarEdenler = array("elma", "armut", "elma", "çilek", "armut", "elma");
$sayilar = array_count_values($tekrarEdenler);
echo "array_count_values sonrası: <pre>" . print_r($sayilar, true) . "</pre>";
/* Çıktı:
Array
(
[elma] => 3
[armut] => 2
[çilek] => 1
)
*/
// İki dizi arasındaki farklılıkları hesaplar: array_diff()
$dizi1 = array("elma", "armut", "muz", "çilek");
$dizi2 = array("elma", "çilek", "kiraz");
$fark = array_diff($dizi1, $dizi2);
echo "array_diff sonrası (dizi1'de olup dizi2'de olmayanlar): " . implode(", ", $fark) . "<br>"; // Çıktı: armut, muz
// İki dizi arasındaki ortak değerleri çeker: array_intersect()
$ortak = array_intersect($dizi1, $dizi2);
echo "array_intersect sonrası (ortak elemanlar): " . implode(", ", $ortak) . "<br>"; // Çıktı: elma, çilek
// Dizideki yinelenen değerleri siler (benzersiz bırakır): array_unique()
$tekrarEdenSayilar = array(1, 2, 2, 3, 4, 4, 1, 5);
$benzersizSayilar = array_unique($tekrarEdenSayilar);
echo "array_unique sonrası: " . implode(", ", $benzersizSayilar) . "<br>"; // Çıktı: 1, 2, 3, 4, 5
// Diziyi otomatik olarak belirli aralıklarda oluşturur: range()
$sayiAraligi = range(1, 5); // 1'den 5'e kadar sayılar
$harfAraligi = range('a', 'e'); // a'dan e'ye kadar harfler
echo "range (sayılar): " . implode(", ", $sayiAraligi) . "<br>"; // Çıktı: 1, 2, 3, 4, 5
echo "range (harfler): " . implode(", ", $harfAraligi) . "<br>"; // Çıktı: a, b, c, d, e
// Bir diziyi alarak, dizideki anahtarların adlarıyla skaler değişkenler oluşturur: extract()
$bilgi = array("ad" => "Deniz", "yas" => 25);
extract($bilgi);
echo "Extract sonrası: Ad: " . $ad . ", Yaş: " . $yas . "<br>"; // Çıktı: Ad: Deniz, Yaş: 25
// Diziyi değerlerle doldurur: array_fill()
$doldurulmusDizi = array_fill(0, 5, "PHP"); // 0. indeksten başla, 5 elemanı "PHP" ile doldur
echo "array_fill sonrası: " . implode(", ", $doldurulmusDizi) . "<br>"; // Çıktı: PHP, PHP, PHP, PHP, PHP
// Dizinin anahtar kelimelerini büyük/küçük harfe çevirir: array_change_key_case()
$urun = array("URUN_KODU" => "123", "fiyat" => 50);
$kucukHarfliAnahtarlar = array_change_key_case($urun, CASE_LOWER);
echo "array_change_key_case sonrası: <pre>" . print_r($kucukHarfliAnahtarlar, true) . "</pre>";
/* Çıktı:
Array
(
[urun_kodu] => 123
[fiyat] => 50
)
*/
// Bir dizinin elemanlarını tersten sıralayarak yeni bir dizi oluşturur: array_reverse()
$normalDizi = array("a", "b", "c");
$tersDizi = array_reverse($normalDizi);
echo "array_reverse sonrası: " . implode(", ", $tersDizi) . "<br>"; // Çıktı: c, b, a
?>
PHP'nin dizi fonksiyonları, veri manipülasyonu ve yönetimi için inanılmaz derecede güçlü bir araç setidir. Bu fonksiyonları ustaca kullanmak, hem kodunuzu kısaltır hem de performans açısından daha verimli uygulamalar geliştirmenize olanak tanır. Her bir fonksiyonun ne işe yaradığını ve ne zaman kullanılacağını öğrenmek için bol bol pratik yapın!
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder