PHP Dizi Fonksiyonları
Tags: php
Published: 2023-08-18 15:13:45

{%- # TOC start (generated with https://github.com/derlin/bitdowntoc) -%}

  * [1. Giriş](#php-1-giriş)
    + [Dizilerin Tanımı ve Kullanım Alanları](#php-dizilerin-tanımı-ve-kullanım-alanları)
    + [Dizi Fonksiyonlarının Önemi](#php-dizi-fonksiyonlarının-önemi)
  * [2. Dizi Oluşturma ve Tanımlama](#php-2-dizi-oluşturma-ve-tanımlama)
    + [Dizi Oluşturma Yöntemleri](#php-dizi-oluşturma-yöntemleri)
      - [Indeksli Diziler](#php-indeksli-diziler)
      - [İlişkisel Diziler](#php-i̇lişkisel-diziler)
    + [`array()` Fonksiyonu](#php--raw-array-endraw-fonksiyonu)
    + [Dizi Elemanlarına Erişim](#php-dizi-elemanlarına-erişim)
    + [Dizi Elemanlarına Değiştirme](#php-dizi-elemanlarına-değiştirme)
    + [Özel Durum: Dizi Elemanlarına Yeni Ekleme](#php-özel-durum-dizi-elemanlarına-yeni-ekleme)
  * [3. Dizi Ekleme ve Silme İşlemleri](#php-3-dizi-ekleme-ve-silme-i̇şlemleri)
    + [Eleman Ekleme Yöntemleri](#php-eleman-ekleme-yöntemleri)
      - [`array_push()` ve `array_unshift()`](#php--raw-arraypush-endraw-ve-raw-arrayunshift-endraw-)
      - [Belirli Bir İndise Ekleme](#php-belirli-bir-i̇ndise-ekleme)
    + [Eleman Silme Yöntemleri](#php-eleman-silme-yöntemleri)
      - [`unset()`](#php--raw-unset-endraw-)
      - [`array_pop()` ve `array_shift()`](#php--raw-arraypop-endraw-ve-raw-arrayshift-endraw-)
      - [Belirli Bir İndisten Sonrasını Silme](#php-belirli-bir-i̇ndisten-sonrasını-silme)
  * [4. Dizi Döngüleri](#php-4-dizi-döngüleri)
    + [`foreach` Döngüsü](#php--raw-foreach-endraw-döngüsü)
      - [Örnek: Toplamı Hesaplama](#php-örnek-toplamı-hesaplama)
    + [`for` Döngüsü ile Dizi İşlemleri](#php--raw-for-endraw-döngüsü-ile-dizi-i̇şlemleri)
      - [Örnek: En Büyük Değeri Bulma](#php-örnek-en-büyük-değeri-bulma)
    + [`while` Döngüsü ile Dizi İşlemleri](#php--raw-while-endraw-döngüsü-ile-dizi-i̇şlemleri)
      - [Örnek: Belirli Bir Renk Bulma](#php-örnek-belirli-bir-renk-bulma)
  * [5. Dizi Sıralama ve Sıralama Fonksiyonları](#php-5-dizi-sıralama-ve-sıralama-fonksiyonları)
    + [Temel Sıralama Fonksiyonları](#php-temel-sıralama-fonksiyonları)
      - [`sort()` ve `rsort()`](#php--raw-sort-endraw-ve-raw-rsort-endraw-)
      - [`asort()` ve `arsort()`](#php--raw-asort-endraw-ve-raw-arsort-endraw-)
    + [Özelleştirilebilir Sıralama Fonksiyonları](#php-özelleştirilebilir-sıralama-fonksiyonları)
      - [`usort()`](#php--raw-usort-endraw-)
      - [Örnek: İsimlere Göre Alfabetik Sıralama](#php-örnek-i̇simlere-göre-alfabetik-sıralama)
    + [Çok Boyutlu Dizilerin Sıralanması](#php-çok-boyutlu-dizilerin-sıralanması)
      - [Örnek: İsim ve Notlarına Göre Sıralama](#php-örnek-i̇sim-ve-notlarına-göre-sıralama)
  * [6. Dizi Fonksiyonlarıyla İlgili İleri Konular](#php-6-dizi-fonksiyonlarıyla-i̇lgili-i̇leri-konular)
    + [`array_map()` Fonksiyonu](#php--raw-arraymap-endraw-fonksiyonu)
      - [Örnek: İki Dizi Elemanlarını Toplama](#php-örnek-i̇ki-dizi-elemanlarını-toplama)
    + [`array_filter()` Fonksiyonu](#php--raw-arrayfilter-endraw-fonksiyonu)
      - [Örnek: Pozitif Sayıları Filtreleme](#php-örnek-pozitif-sayıları-filtreleme)
    + [`array_reduce()` Fonksiyonu](#php--raw-arrayreduce-endraw-fonksiyonu)
      - [Örnek: Dizi Elemanlarının Toplamını Bulma](#php-örnek-dizi-elemanlarının-toplamını-bulma)
    + [`array_walk()` Fonksiyonu](#php--raw-arraywalk-endraw-fonksiyonu)
      - [Örnek: Diziyi Büyük Harfe Çevirme](#php-örnek-diziyi-büyük-harfe-çevirme)
    + [`array_column()` Fonksiyonu](#php--raw-arraycolumn-endraw-fonksiyonu)
      - [Örnek: Çok Boyutlu Diziden İsimleri Alma](#php-örnek-çok-boyutlu-diziden-i̇simleri-alma)
    + [`array_diff()` Fonksiyonu](#php--raw-arraydiff-endraw-fonksiyonu)
      - [Örnek: Farklı Elemanları Bulma](#php-örnek-farklı-elemanları-bulma)
    + [`array_intersect()` Fonksiyonu](#php--raw-arrayintersect-endraw-fonksiyonu)
      - [Örnek: Ortak Elemanları Bulma](#php-örnek-ortak-elemanları-bulma)
    + [`array_merge()` Fonksiyonu](#php--raw-arraymerge-endraw-fonksiyonu)
      - [Örnek: Dizileri Birleştirme](#php-örnek-dizileri-birleştirme)
    + [`array_search()` Fonksiyonu](#php--raw-arraysearch-endraw-fonksiyonu)
      - [Örnek: Değerin İndeksini Bulma](#php-örnek-değerin-i̇ndeksini-bulma)
    + [`array_slice()` Fonksiyonu](#php--raw-arrayslice-endraw-fonksiyonu)
      - [Örnek: Dizi Bölümünü Alma](#php-örnek-dizi-bölümünü-alma)
    + [`array_unique()` Fonksiyonu](#php--raw-arrayunique-endraw-fonksiyonu)
      - [Örnek: Tekrarlananları Silme](#php-örnek-tekrarlananları-silme)
    + [`array_rand()` Fonksiyonu](#php--raw-arrayrand-endraw-fonksiyonu)
      - [Örnek: Rastgele Eleman Seçme](#php-örnek-rastgele-eleman-seçme)
    + [`array_combine()` Fonksiyonu](#php--raw-arraycombine-endraw-fonksiyonu)
      - [Örnek: Dizileri Anahtar-Değer Çiftleri Olarak Birleştirme](#php-örnek-dizileri-anahtardeğer-çiftleri-olarak-birleştirme)
  * [7. Çok Boyutlu Diziler](#php-7-çok-boyutlu-diziler)
    + [Çok Boyutlu Dizi Oluşturma](#php-çok-boyutlu-dizi-oluşturma)
    + [Çok Boyutlu Diziye Erişim](#php-çok-boyutlu-diziye-erişim)
    + [Çok Boyutlu Dizi Döngüleri](#php-çok-boyutlu-dizi-döngüleri)
    + [Fonksiyonlarla Çok Boyutlu Diziler](#php-fonksiyonlarla-çok-boyutlu-diziler)
  * [8. Dizi Hata Ayıklama ve İpuçları](#php-8-dizi-hata-ayıklama-ve-i̇puçları)
    + [Dizi Hataları ve Ayıklama](#php-dizi-hataları-ve-ayıklama)
    + [`isset()` ve `empty()` Fonksiyonları](#php--raw-isset-endraw-ve-raw-empty-endraw-fonksiyonları)
    + [Hata Ayıklama Araçları](#php-hata-ayıklama-araçları)
  * [9. Örnek Uygulamalar](#php-9-örnek-uygulamalar)
    + [Örnek 1: En Yüksek ve En Düşük Notu Bulma](#php-örnek-1-en-yüksek-ve-en-düşük-notu-bulma)
    + [Örnek 2: Not Ortalaması Hesaplama](#php-örnek-2-not-ortalaması-hesaplama)
    + [Örnek 3: İsimleri Birleştirme](#php-örnek-3-i̇simleri-birleştirme)
    + [Örnek 4: Harf Frekansını Hesaplama](#php-örnek-4-harf-frekansını-hesaplama)
    + [Örnek 5: Rastgele Sıralama](#php-örnek-5-rastgele-sıralama)
  * [İleri Seviye Konular](#php-i̇leri-seviye-konular)
    + [Dizi İşaretçileri: Dizi Elemanlarına İşaretçi Aritmetiği ile Erişim](#php-dizi-i̇şaretçileri-dizi-elemanlarına-i̇şaretçi-aritmetiği-ile-erişim)
    + [Dizi Sabitleri: Değiştirilemez Veri Saklama](#php-dizi-sabitleri-değiştirilemez-veri-saklama)
    + [Dizi İşlevleri: Daha İleri Veri İşleme İmkanı](#php-dizi-i̇şlevleri-daha-i̇leri-veri-i̇şleme-i̇mkanı)
    + [Dizi Sınıfları: Daha Karmaşık Veri Yönetimi](#php-dizi-sınıfları-daha-karmaşık-veri-yönetimi)

{%- # TOC end -%}

{%- # TOC -%}<a name="php-1-giriş"></a>
## 1. Giriş

Diziler, programlamada çok sık kullanılan ve birden fazla değeri aynı değişken altında saklamamıza olanak tanıyan önemli bir veri yapısıdır. PHP'de diziler, farklı veri türlerini içerebilen ve dinamik olarak genişletilebilen yapılar olarak kullanılabilir. Diziler, veri koleksiyonlarını işlemek, depolamak ve düzenlemek için temel araçlardan biridir.

{%- # TOC -%}<a name="php-dizilerin-tanımı-ve-kullanım-alanları"></a>
### Dizilerin Tanımı ve Kullanım Alanları

Bir dizi, aynı türde veya farklı türde verileri içinde barındırabilen bir veri koleksiyonudur. Bu veriler, indisler veya anahtarlar aracılığıyla erişilebilir. Dizilerin kullanım alanları oldukça geniştir ve örnek olarak şunları içerebilir:

- **Veritabanı Sonuçları:** Veritabanından alınan verileri saklamak ve işlemek için diziler kullanılır.
- **Form Verileri:** Web formlarından gelen verileri toplamak ve düzenlemek için diziler yaygın şekilde kullanılır.
- **Çok Boyutlu Veriler:** Matrisler veya ilişkisel veriler gibi çok boyutlu yapıları temsil etmek için diziler kullanılabilir.
- **Listeler ve Sıralamalar:** Öğrenci listeleri, ürün katalogları gibi sıralı verileri yönetmek için diziler idealdir.

{%- # TOC -%}<a name="php-dizi-fonksiyonlarının-önemi"></a>
### Dizi Fonksiyonlarının Önemi

PHP, dizilerle çalışmayı kolaylaştıran bir dizi (pun intended) dizi fonksiyonu sağlar. Bu fonksiyonlar, dizileri oluşturmayı, düzenlemeyi, sıralamayı ve filtrelemeyi daha basit ve etkili hale getirir. Dizi fonksiyonları, kod tekrarını azaltır, hataları önler ve işlem süreçlerini optimize eder.

Bu makalede, PHP'nin temel dizi fonksiyonlarını inceleyeceğiz. Dizi oluşturma yöntemleri, elemanlara erişim, ekleme ve silme işlemleri, döngülerle dizi işleme, sıralama fonksiyonları ve daha fazlası konularını ele alacağız. Her bir fonksiyonun kullanımını açıklamak ve örneklerle desteklemek, dizileri etkili bir şekilde yönetmenize yardımcı olacaktır.

---



{%- # TOC -%}<a name="php-2-dizi-oluşturma-ve-tanımlama"></a>
## 2. Dizi Oluşturma ve Tanımlama

Diziler, PHP'de farklı veri türlerini gruplamak ve işlemek için kullanılan temel veri yapılarıdır. Dizileri oluşturmanın çeşitli yöntemleri bulunur ve bu bölümde bu yöntemlere göz atacağız.

{%- # TOC -%}<a name="php-dizi-oluşturma-yöntemleri"></a>
### Dizi Oluşturma Yöntemleri

{%- # TOC -%}<a name="php-indeksli-diziler"></a>
#### Indeksli Diziler

PHP'de en yaygın dizi türü, indislerle erişilen indeksli dizilerdir. Bu diziler, sayısal indislerle sıralanan elemanlardan oluşur.

```php
$renkler = array("Kırmızı", "Mavi", "Yeşil");
```

veya kısa sözdizimiyle:

```php
$renkler = ["Kırmızı", "Mavi", "Yeşil"];
```

> array() fonksiyonu ile oluşturulan diziler PHP 5.4 sürümünden itibaren [] ile de oluşturulabilir.

{%- # TOC -%}<a name="php-i̇lişkisel-diziler"></a>
#### İlişkisel Diziler

İlişkisel dizilerde, her bir eleman bir anahtar-değer çifti olarak saklanır. Anahtarlar, elemanlara benzersiz bir şekilde erişmek için kullanılır.

```php
$ogrenci = array("ad" => "Ahmet", "yas" => 20, "bolum" => "Bilgisayar Mühendisliği");
```

{%- # TOC -%}<a name="php--raw-array-endraw-fonksiyonu"></a>
### `array()` Fonksiyonu

Dizileri oluşturmak için `array()` fonksiyonunu kullanabilirsiniz. Bu fonksiyon hem indeksli hem de ilişkisel dizileri oluşturmanıza olanak tanır.

```php
$notlar = array(85, 90, 78, 95);
$personel = array("ad" => "Ayşe", "görev" => "Yazılım Geliştirici");
```

{%- # TOC -%}<a name="php-dizi-elemanlarına-erişim"></a>
### Dizi Elemanlarına Erişim

Dizilerdeki elemanlara erişmek için indisleri veya anahtarları kullanabilirsiniz.

```php
echo $renkler[0]; // "Kırmızı"
echo $ogrenci["yas"]; // 20
```

{%- # TOC -%}<a name="php-dizi-elemanlarına-değiştirme"></a>
### Dizi Elemanlarına Değiştirme

Dizi elemanlarını değiştirmek için indis veya anahtarları kullanarak erişebilir ve değerleri güncelleyebilirsiniz.

```php
$renkler[1] = "Sarı";
$ogrenci["bolum"] = "Elektrik Mühendisliği";
```

Dizileri oluşturma ve elemanlara erişim ve değiştirme, PHP'de dizilerle çalışmanın temel adımlarıdır. Bu adımları öğrenerek, farklı veri türlerini etkili bir şekilde saklayabilir ve işleyebilirsiniz.

{%- # TOC -%}<a name="php-özel-durum-dizi-elemanlarına-yeni-ekleme"></a>
### Özel Durum: Dizi Elemanlarına Yeni Ekleme

Dizilere, mevcut indis veya anahtarların dışında yeni elemanlar ekleyebilirsiniz.

```php
$ogrenci["cinsiyet"] = "Erkek"; // Yeni bir eleman ekler
$notlar[] = 92; // Dizinin sonuna yeni bir not ekler
```

Bu işlem, diziye yeni bir anahtar veya indis atayarak veya sonuna eleman ekleyerek gerçekleştirilir.

---

{%- # TOC -%}<a name="php-3-dizi-ekleme-ve-silme-i̇şlemleri"></a>
## 3. Dizi Ekleme ve Silme İşlemleri

Dizileri yönetirken, eleman eklemek ve silmek sıkça kullanılan işlemlerdir. Bu bölümde, dizilere eleman eklemenin ve silmenin farklı yöntemlerini inceleyeceğiz.

{%- # TOC -%}<a name="php-eleman-ekleme-yöntemleri"></a>
### Eleman Ekleme Yöntemleri

{%- # TOC -%}<a name="php--raw-arraypush-endraw-ve-raw-arrayunshift-endraw-"></a>
#### `array_push()` ve `array_unshift()`

Dizilere eleman eklemek için `array_push()` ve `array_unshift()` fonksiyonları kullanılır.

```php
$sehirler = array("Ankara", "İstanbul");
array_push($sehirler, "İzmir"); // Dizinin sonuna eleman ekler: ["Ankara", "İstanbul", "İzmir"]

array_unshift($sehirler, "Bursa"); // Dizinin başına eleman ekler: ["Bursa", "Ankara", "İstanbul", "İzmir"]
```

{%- # TOC -%}<a name="php-belirli-bir-i̇ndise-ekleme"></a>
#### Belirli Bir İndise Ekleme

Belirli bir indise eleman eklemek için `array_splice()` fonksiyonunu kullanabilirsiniz.

```php
$harfler = array("a", "b", "d");
array_splice($harfler, 2, 0, "c"); // İkinci indise eleman ekler: ["a", "b", "c", "d"]
```

{%- # TOC -%}<a name="php-eleman-silme-yöntemleri"></a>
### Eleman Silme Yöntemleri

{%- # TOC -%}<a name="php--raw-unset-endraw-"></a>
#### `unset()`

Elemanları belirli bir indis veya anahtar kullanarak silmek için `unset()` fonksiyonunu kullanabilirsiniz.

```php
$notlar = array(85, 90, 78, 95);
unset($notlar[1]); // İkinci elemanı siler: [85, 78, 95]
```

{%- # TOC -%}<a name="php--raw-arraypop-endraw-ve-raw-arrayshift-endraw-"></a>
#### `array_pop()` ve `array_shift()`

`array_pop()` dizinin sonundaki elemanı, `array_shift()` ise dizinin başındaki elemanı siler.

```php
$sehirler = array("Ankara", "İstanbul", "İzmir");
array_pop($sehirler); // Son elemanı siler: ["Ankara", "İstanbul"]
array_shift($sehirler); // İlk elemanı siler: ["İstanbul"]
```

{%- # TOC -%}<a name="php-belirli-bir-i̇ndisten-sonrasını-silme"></a>
#### Belirli Bir İndisten Sonrasını Silme

Belirli bir indisten sonrasını silmek için `array_splice()` fonksiyonunu kullanabilirsiniz.

```php
$harfler = array("a", "b", "c", "d");
array_splice($harfler, 2); // İkinci indisten sonrasını siler: ["a", "b"]
```

Dizilere eleman eklemek ve silmek, veri yönetiminde önemli adımlardır. Bu işlemleri öğrenerek, verilerinizi dinamik bir şekilde düzenleyebilir ve güncelleyebilirsiniz.

---

{%- # TOC -%}<a name="php-4-dizi-döngüleri"></a>
## 4. Dizi Döngüleri

Dizilerdeki elemanları işlemek ve üzerlerinde işlemler yapmak için döngüler kullanmak sıkça tercih edilen bir yöntemdir. Bu bölümde, dizileri döngülerle nasıl işleyebileceğimizi ve çeşitli örneklerle nasıl kullanabileceğimizi inceleyeceğiz.

{%- # TOC -%}<a name="php--raw-foreach-endraw-döngüsü"></a>
### `foreach` Döngüsü

`foreach` döngüsü, dizileri döngü içinde eleman eleman gezmek için kullanılır. Bu döngü, dizinin her elemanını dolaşarak işlem yapmanıza olanak sağlar.

```php
$sehirler = array("Ankara", "İstanbul", "İzmir");

foreach ($sehirler as $sehir) {
    echo $sehir . "<br>";
}
```

{%- # TOC -%}<a name="php-örnek-toplamı-hesaplama"></a>
#### Örnek: Toplamı Hesaplama

```php
$notlar = array(85, 90, 78, 95);
$toplam = 0;

foreach ($notlar as $not) {
    $toplam += $not;
}

echo "Notların Toplamı: " . $toplam;
```

> array_sum() fonksiyonunu araştırınız.

{%- # TOC -%}<a name="php--raw-for-endraw-döngüsü-ile-dizi-i̇şlemleri"></a>
### `for` Döngüsü ile Dizi İşlemleri

`for` döngüsünü kullanarak dizilerdeki elemanları indisleri üzerinden gezebilirsiniz.

```php
$notlar = array(85, 90, 78, 95);

for ($i = 0; $i < count($notlar); $i++) {
    echo "Not: " . $notlar[$i] . "<br>";
}
```

{%- # TOC -%}<a name="php-örnek-en-büyük-değeri-bulma"></a>
#### Örnek: En Büyük Değeri Bulma

```php
$notlar = array(85, 90, 78, 95);
$enBuyuk = $notlar[0];

for ($i = 1; $i < count($notlar); $i++) {
    if ($notlar[$i] > $enBuyuk) {
        $enBuyuk = $notlar[$i];
    }
}

echo "En Büyük Not: " . $enBuyuk;
```

> min() ve max() fonksiyonlarını araştırınız.

{%- # TOC -%}<a name="php--raw-while-endraw-döngüsü-ile-dizi-i̇şlemleri"></a>
### `while` Döngüsü ile Dizi İşlemleri

`while` döngüsü ile de dizilerdeki elemanları işleyebilirsiniz. Bu döngüyü, dizinin sonuna gelene kadar çalıştırabilirsiniz.

```php
$renkler = array("Kırmızı", "Mavi", "Yeşil");
$indeks = 0;

while ($indeks < count($renkler)) {
    echo $renkler[$indeks] . "<br>";
    $indeks++;
}
```

{%- # TOC -%}<a name="php-örnek-belirli-bir-renk-bulma"></a>
#### Örnek: Belirli Bir Renk Bulma

```php
$colors = array("Kırmızı", "Mavi", "Yeşil");
$targetColor = "Mavi";
$index = 0;
$founded = false;

while ($index < count($colors)) {
    if ($colors[$index] === $targetColor) {
        $founded = true;
        break;
    }
    $index++;
}

if ($founded) {
    echo "Aradığınız renk bulundu => " . $targetColor . "\n";
} else {
    echo "Aradığınız renk bulunamadı.";
}

```

> array_search() fonksiyonunu araştırınız.

Dizi döngüleri, dizileri verimli bir şekilde dolaşmak, işlem yapmak ve farklı senaryolarda kullanmak için önemli bir araçtır. Bu örnekler, döngülerin farklı kullanım senaryolarını göstermektedir. Bir sonraki bölümde dizi sıralama ve sıralama fonksiyonlarını inceleyeceğiz.

---

{%- # TOC -%}<a name="php-5-dizi-sıralama-ve-sıralama-fonksiyonları"></a>
## 5. Dizi Sıralama ve Sıralama Fonksiyonları

Dizileri sıralamak, veri analizi ve işlemlerinde önemli bir adımdır. Bu bölümde, PHP'nin sıralama fonksiyonlarını ve dizileri nasıl sıralayabileceğimizi daha detaylı bir şekilde inceleyeceğiz.

{%- # TOC -%}<a name="php-temel-sıralama-fonksiyonları"></a>
### Temel Sıralama Fonksiyonları

{%- # TOC -%}<a name="php--raw-sort-endraw-ve-raw-rsort-endraw-"></a>
#### `sort()` ve `rsort()`

`sort()` fonksiyonu, diziyi artan sıraya göre sıralarken, `rsort()` fonksiyonu azalan sıraya göre sıralar.

```php
$notlar = array(85, 90, 78, 95);
sort($notlar); // Artan sırayla sıralar: [78, 85, 90, 95]
rsort($notlar); // Azalan sırayla sıralar: [95, 90, 85, 78]
```

{%- # TOC -%}<a name="php--raw-asort-endraw-ve-raw-arsort-endraw-"></a>
#### `asort()` ve `arsort()`

`asort()` fonksiyonu, ilişkisel diziyi değerlere göre artan sıraya göre sıralar. `arsort()` fonksiyonu ise azalan sıraya göre sıralar.

```php
$ogrenciler = array("Ahmet" => 85, "Mehmet" => 90, "Ayşe" => 78, "Zeynep" => 95);
asort($ogrenciler); // Değere göre artan sırayla sıralar
arsort($ogrenciler); // Değere göre azalan sırayla sıralar
```

> Şunu unutmamalısınız: sort() veya rsort() ile sıralama yaparken key değeri değişirken asort() ve arsort() ile yapılan sıralamalarda key değeri değişmez.

```php
$notlar = array(85, 90, 78, 95);

sort($notlar); // key değişir

Çıktı:
Array
(
    [0] => 78
    [1] => 85
    [2] => 90
    [3] => 95
)

asort($notlar); // key değişmez

Çıktı:
Array
(
    [2] => 78
    [0] => 85
    [1] => 90
    [3] => 95
)

```

{%- # TOC -%}<a name="php-özelleştirilebilir-sıralama-fonksiyonları"></a>
### Özelleştirilebilir Sıralama Fonksiyonları

{%- # TOC -%}<a name="php--raw-usort-endraw-"></a>
#### `usort()`

`usort()` fonksiyonu, diziyi kullanıcı tarafından tanımlanan bir işlevle sıralar.

```php
function kendiSirala($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$sayilar = array(3, 1, 4, 1, 5, 9, 2, 6);
usort($sayilar, "kendiSirala"); // Tanımlanan işleve göre sıralar
```

{%- # TOC -%}<a name="php-örnek-i̇simlere-göre-alfabetik-sıralama"></a>
#### Örnek: İsimlere Göre Alfabetik Sıralama

```php
$isimler = array("Zeynep", "Mehmet", "Ayşe", "Ahmet", "İsmail");
usort($isimler, function($a, $b) {
    return strcmp($a, $b);
});
```

{%- # TOC -%}<a name="php-çok-boyutlu-dizilerin-sıralanması"></a>
### Çok Boyutlu Dizilerin Sıralanması

Çok boyutlu dizilerde sıralama yaparken, özelleştirilebilir sıralama işlevlerini kullanarak istediğiniz şekilde sıralama yapabilirsiniz.

```php
$ogrenciler = array(
    array("ad" => "Ahmet", "not" => 85),
    array("ad" => "Mehmet", "not" => 90),
    array("ad" => "Ayşe", "not" => 78)
);

usort($ogrenciler, function($a, $b) {
    return $b["not"] - $a["not"];
});
```

{%- # TOC -%}<a name="php-örnek-i̇sim-ve-notlarına-göre-sıralama"></a>
#### Örnek: İsim ve Notlarına Göre Sıralama

```php
$ogrenciler = array(
    array("ad" => "Ahmet", "not" => 85),
    array("ad" => "Mehmet", "not" => 90),
    array("ad" => "Ayşe", "not" => 78),
    array("ad" => "Fatma", "not" => 95),
    array("ad" => "Ahmet", "not" => 86),
);

usort($ogrenciler, function ($a, $b) {
    $isimSonuc = strcmp($a["ad"], $b["ad"]);
    if ($isimSonuc == 0) {
        echo "İsimler aynı, notlara göre sıralanıyor...\n";
        return $b["not"] - $a["not"];
    }
    return $isimSonuc;
});

print_r($ogrenciler);
```

Dizileri sıralamak, verileri düzenlemek ve analiz etmek için önemli bir beceridir. Bu bölümde temel ve özelleştirilebilir sıralama fonksiyonlarını daha fazla örneklerle inceledik. Bir sonraki bölümde dizi fonksiyonlarıyla ilgili daha ileri konuları inceleyeceğiz.

---

{%- # TOC -%}<a name="php-6-dizi-fonksiyonlarıyla-i̇lgili-i̇leri-konular"></a>
## 6. Dizi Fonksiyonlarıyla İlgili İleri Konular

Dizi fonksiyonları, PHP'nin güçlü araçlarından biridir ve birçok karmaşık işlemi basit bir şekilde gerçekleştirmemizi sağlar. Bu bölümde, dizi fonksiyonlarıyla ilgili daha ileri konuları ve örneklerini daha ayrıntılı bir şekilde inceleyeceğiz.

{%- # TOC -%}<a name="php--raw-arraymap-endraw-fonksiyonu"></a>
### `array_map()` Fonksiyonu

`array_map()` fonksiyonu, bir veya birden fazla dizi üzerinde belirtilen işlemi gerçekleştirerek yeni bir dizi oluşturur.

{%- # TOC -%}<a name="php-örnek-i̇ki-dizi-elemanlarını-toplama"></a>
#### Örnek: İki Dizi Elemanlarını Toplama

```php
$dizi1 = array(1, 2, 3);
$dizi2 = array(10, 20, 30);

$sonuclar = array_map(function ($x, $y) {
    return $x + $y;
}, $dizi1, $dizi2); // [11, 22, 33]
```

{%- # TOC -%}<a name="php--raw-arrayfilter-endraw-fonksiyonu"></a>
### `array_filter()` Fonksiyonu

`array_filter()` fonksiyonu, belirli bir dizi üzerinde belirtilen bir işlemi uygulayarak sadece belirli koşulu sağlayan elemanları içeren yeni bir dizi oluşturur.

{%- # TOC -%}<a name="php-örnek-pozitif-sayıları-filtreleme"></a>
#### Örnek: Pozitif Sayıları Filtreleme

```php
$sayilar = array(1, -2, 3, -4, 5, -6);

$pozitifler = array_filter($sayilar, function ($x) {
    return $x > 0;
}); // [1, 3, 5]
```

{%- # TOC -%}<a name="php--raw-arrayreduce-endraw-fonksiyonu"></a>
### `array_reduce()` Fonksiyonu

`array_reduce()` fonksiyonu, bir diziyi belirtilen işlemi uygulayarak tek bir değere dönüştürür.

{%- # TOC -%}<a name="php-örnek-dizi-elemanlarının-toplamını-bulma"></a>
#### Örnek: Dizi Elemanlarının Toplamını Bulma

```php
$sayilar = array(1, 2, 3, 4, 5);
$toplam = array_reduce($sayilar, function($carry, $item) {
    return $carry + $item;
}); // 15
```

{%- # TOC -%}<a name="php--raw-arraywalk-endraw-fonksiyonu"></a>
### `array_walk()` Fonksiyonu

`array_walk()` fonksiyonu, bir dizinin her bir elemanına belirtilen işlemi uygular.

{%- # TOC -%}<a name="php-örnek-diziyi-büyük-harfe-çevirme"></a>
#### Örnek: Diziyi Büyük Harfe Çevirme

```php
$renkler = array("Kırmızı", "Mavi", "Yeşil");
array_walk($renkler, function(&$value, $key) {
    $value = strtoupper($value);
});
```

{%- # TOC -%}<a name="php--raw-arraycolumn-endraw-fonksiyonu"></a>
### `array_column()` Fonksiyonu

`array_column()` fonksiyonu, çok boyutlu bir diziden belirli bir sütunu alarak yeni bir dizi oluşturur.

{%- # TOC -%}<a name="php-örnek-çok-boyutlu-diziden-i̇simleri-alma"></a>
#### Örnek: Çok Boyutlu Diziden İsimleri Alma

```php
$ogrenciler = array(
    array("ad" => "Ahmet", "not" => 85),
    array("ad" => "Mehmet", "not" => 90),
    array("ad" => "Ayşe", "not" => 78)
);

$isimler = array_column($ogrenciler, "ad"); // ["Ahmet", "Mehmet", "Ayşe"]
```

{%- # TOC -%}<a name="php--raw-arraydiff-endraw-fonksiyonu"></a>
### `array_diff()` Fonksiyonu

`array_diff()` fonksiyonu, iki veya daha fazla diziyi karşılaştırarak bir dizide bulunan ancak diğer dizilerde bulunmayan elemanları bulmanızı sağlar.

{%- # TOC -%}<a name="php-örnek-farklı-elemanları-bulma"></a>
#### Örnek: Farklı Elemanları Bulma

```php
$dizi1 = array(1, 2, 3, 4, 5);
$dizi2 = array(3, 4, 5, 6, 7);

$farkliElemanlar = array_diff($dizi1, $dizi2); // [1, 2]
```

{%- # TOC -%}<a name="php--raw-arrayintersect-endraw-fonksiyonu"></a>
### `array_intersect()` Fonksiyonu

`array_intersect()` fonksiyonu, iki veya daha fazla diziyi karşılaştırarak ortak elemanları bulmanızı sağlar.

{%- # TOC -%}<a name="php-örnek-ortak-elemanları-bulma"></a>
#### Örnek: Ortak Elemanları Bulma

```php
$dizi1 = array(1, 2, 3, 4, 5);
$dizi2 = array(3, 4, 5, 6, 7);

$ortakElemanlar = array_intersect($dizi1, $dizi2); // [3, 4, 5]
```

{%- # TOC -%}<a name="php--raw-arraymerge-endraw-fonksiyonu"></a>
### `array_merge()` Fonksiyonu

`array_merge()` fonksiyonu, iki veya daha fazla diziyi birleştirerek yeni bir dizi oluşturmanızı sağlar.

{%- # TOC -%}<a name="php-örnek-dizileri-birleştirme"></a>
#### Örnek: Dizileri Birleştirme

```php
$dizi1 = array("kırmızı", "yeşil");
$dizi2 = array("mavi", "sarı");

$birlesikDizi = array_merge($dizi1, $dizi2); // ["kırmızı", "yeşil", "mavi", "sarı"]
```

{%- # TOC -%}<a name="php--raw-arraysearch-endraw-fonksiyonu"></a>
### `array_search()` Fonksiyonu

`array_search()` fonksiyonu, bir dizide belirli bir değeri aramanızı sağlar.

{%- # TOC -%}<a name="php-örnek-değerin-i̇ndeksini-bulma"></a>
#### Örnek: Değerin İndeksini Bulma

```php
$dizi = array(10, 20, 30, 40, 50);

$arananIndeks = array_search(30, $dizi); // 2
```

{%- # TOC -%}<a name="php--raw-arrayslice-endraw-fonksiyonu"></a>
### `array_slice()` Fonksiyonu

`array_slice()` fonksiyonu, bir dizinin belirli bir bölümünü keserek almanızı sağlar.

{%- # TOC -%}<a name="php-örnek-dizi-bölümünü-alma"></a>
#### Örnek: Dizi Bölümünü Alma

```php
$dizi = array(10, 20, 30, 40, 50);

$bolum = array_slice($dizi, 2, 2); // [30, 40]
```

{%- # TOC -%}<a name="php--raw-arrayunique-endraw-fonksiyonu"></a>
### `array_unique()` Fonksiyonu

`array_unique()` fonksiyonu, bir dizideki tekrarlanan elemanları silmenizi sağlar.

{%- # TOC -%}<a name="php-örnek-tekrarlananları-silme"></a>
#### Örnek: Tekrarlananları Silme

```php
$dizi = array(10, 20, 30, 20, 40, 30, 50);

$tekrarlananlarSilinmis = array_unique($dizi); // [10, 20, 30, 40, 50]
```

{%- # TOC -%}<a name="php--raw-arrayrand-endraw-fonksiyonu"></a>
### `array_rand()` Fonksiyonu

`array_rand()` fonksiyonu, bir diziden rastgele bir veya daha fazla eleman seçmenizi sağlar.

{%- # TOC -%}<a name="php-örnek-rastgele-eleman-seçme"></a>
#### Örnek: Rastgele Eleman Seçme

```php
$dizi = array("kırmızı", "mavi", "yeşil", "sarı", "mor");

$rastgeleIndeks = array_rand($dizi); // Rastgele bir indeks seçer
$rastgeleEleman = $dizi[$rastgeleIndeks]; // Seçilen rastgele eleman
```

{%- # TOC -%}<a name="php--raw-arraycombine-endraw-fonksiyonu"></a>
### `array_combine()` Fonksiyonu

`array_combine()` fonksiyonu, iki diziyi anahtar-değer çiftleri olarak birleştirir.

{%- # TOC -%}<a name="php-örnek-dizileri-anahtardeğer-çiftleri-olarak-birleştirme"></a>
#### Örnek: Dizileri Anahtar-Değer Çiftleri Olarak Birleştirme

```php
$anahtarlar = array("ad", "soyad", "yas");
$degerler = array("Ahmet", "Yılmaz", 30);

$birlesikDizi = array_combine($anahtarlar, $degerler); // ["ad" => "Ahmet", "soyad" => "Yılmaz", "yas" => 30]
```




Bu bölümde daha ileri düzeydeki dizi fonksiyonlarını daha detaylı örneklerle inceledik. Makalenin bu noktasında, PHP dizileri ve ilgili fonksiyonları hakkında geniş bir anlayışa sahip olmalısınız.

---

{%- # TOC -%}<a name="php-7-çok-boyutlu-diziler"></a>
## 7. Çok Boyutlu Diziler

Çok boyutlu diziler, iç içe geçmiş dizi yapılarıdır ve genellikle karmaşık veri yapılarını temsil etmek için kullanılırlar. Bu bölümde, çok boyutlu dizileri nasıl oluşturabileceğimizi, işleyebileceğimizi ve yönetebileceğimizi inceleyeceğiz.

{%- # TOC -%}<a name="php-çok-boyutlu-dizi-oluşturma"></a>
### Çok Boyutlu Dizi Oluşturma

Çok boyutlu dizileri oluştururken iç içe geçmiş dizi yapısını kullanabiliriz.

```php
$matris = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
```

{%- # TOC -%}<a name="php-çok-boyutlu-diziye-erişim"></a>
### Çok Boyutlu Diziye Erişim

Çok boyutlu dizilere erişirken indisleri sırayla kullanarak elemanlara ulaşabiliriz.

```php
echo $matris[0][0]; // 1
echo $matris[1][2]; // 6
echo $matris[2][1]; // 8
```

{%- # TOC -%}<a name="php-çok-boyutlu-dizi-döngüleri"></a>
### Çok Boyutlu Dizi Döngüleri

Çok boyutlu dizileri döngülerle işlemek için iç içe döngüler kullanabiliriz.

```php
for ($i = 0; $i < count($matris); $i++) {
    for ($j = 0; $j < count($matris[$i]); $j++) {
        echo $matris[$i][$j] . " ";
    }
    echo "<br>";
}
```

{%- # TOC -%}<a name="php-fonksiyonlarla-çok-boyutlu-diziler"></a>
### Fonksiyonlarla Çok Boyutlu Diziler

Fonksiyonlar kullanarak çok boyutlu dizileri yönetebiliriz.

```php
function toplamHesapla($matris) {
    $toplam = 0;
    for ($i = 0; $i < count($matris); $i++) {
        for ($j = 0; $j < count($matris[$i]); $j++) {
            $toplam += $matris[$i][$j];
        }
    }
    return $toplam;
}

$sonuc = toplamHesapla($matris); // 45
```

Çok boyutlu diziler, karmaşık veri yapılarını temsil etmek ve işlemek için güçlü bir araçtır. Bu bölümde, çok boyutlu dizileri oluşturma, erişim, döngüler ve fonksiyonlarla işleme konularını öğrendik.

---

{%- # TOC -%}<a name="php-8-dizi-hata-ayıklama-ve-i̇puçları"></a>
## 8. Dizi Hata Ayıklama ve İpuçları

Dizi işlemleri sırasında hatalarla karşılaşabiliriz. Bu bölümde, dizi hata ayıklama süreçlerini ve bazı önemli ipuçlarını örneklerle inceleyeceğiz.

{%- # TOC -%}<a name="php-dizi-hataları-ve-ayıklama"></a>
### Dizi Hataları ve Ayıklama

Dizi işlemleri sırasında sıkça karşılaşılan hatalar arasında dizinin oluşturulamaması, indeksin bulunmaması gibi durumlar yer alabilir. Bu tür hataları ayıklamak için hata raporlamayı etkinleştirebiliriz.

```php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$dizi = array(1, 2, 3);
echo $dizi[5]; // Hata: Tanımsız indeks
```

{%- # TOC -%}<a name="php--raw-isset-endraw-ve-raw-empty-endraw-fonksiyonları"></a>
### `isset()` ve `empty()` Fonksiyonları

`isset()` fonksiyonu, bir değerin tanımlı olup olmadığını kontrol ederken, `empty()` fonksiyonu ise bir değerin boş olup olmadığını kontrol eder.

```php
$dizi = array("ad" => "Ahmet", "not" => 85);

if (isset($dizi["ad"])) {
    echo "Ad değeri tanımlı.";
}

if (!empty($dizi["not"])) {
    echo "Not değeri boş değil.";
}
```

{%- # TOC -%}<a name="php-hata-ayıklama-araçları"></a>
### Hata Ayıklama Araçları

PHP'nin hata ayıklama araçları olan `var_dump()` ve `print_r()`, dizileri ve içeriklerini görüntülemek için kullanışlıdır.

```php
$dizi = array(1, 2, 3);
var_dump($dizi); // Dizi yapısını ve içeriğini görüntüler

$ogrenciler = array(
    array("ad" => "Ahmet", "not" => 85),
    array("ad" => "Mehmet", "not" => 90)
);

print_r($ogrenciler); // Dizi yapısını ve içeriğini daha okunabilir şekilde görüntüler
```

Dizi işlemleri sırasında karşılaşılan hataları ayıklamak ve önlemek için bu bölümdeki ipuçları ve fonksiyonlar oldukça faydalıdır. Hata ayıklama araçlarını kullanarak kodunuzu daha güvenli ve hatasız hale getirebilirsiniz.

---

{%- # TOC -%}<a name="php-9-örnek-uygulamalar"></a>
## 9. Örnek Uygulamalar

Bu bölümde, dizi fonksiyonlarını farklı senaryolarda nasıl kullanabileceğimize dair daha fazla örnek uygulamalara göz atacağız. Bu uygulamalar, dizi fonksiyonlarını gerçek dünya senaryolarında nasıl kullanabileceğinizi anlamanıza yardımcı olacaktır.

{%- # TOC -%}<a name="php-örnek-1-en-yüksek-ve-en-düşük-notu-bulma"></a>
### Örnek 1: En Yüksek ve En Düşük Notu Bulma

Verilen bir notlar dizisinde en yüksek ve en düşük notları bulmak için `max()` ve `min()` fonksiyonları kullanılabilir.

```php
$notlar = array(85, 90, 78, 95, 88);
$enYuksekNot = max($notlar); // 95
$enDusukNot = min($notlar); // 78
```

{%- # TOC -%}<a name="php-örnek-2-not-ortalaması-hesaplama"></a>
### Örnek 2: Not Ortalaması Hesaplama

Bir notlar dizisindeki notların ortalamasını hesaplamak için `array_sum()` ve `count()` fonksiyonları kullanılabilir.

```php
$notlar = array(85, 90, 78, 95, 88);
$toplamNot = array_sum($notlar); // 436
$ogrenciSayisi = count($notlar); // 5

$ortalama = $toplamNot / $ogrenciSayisi; // 87.2
```

{%- # TOC -%}<a name="php-örnek-3-i̇simleri-birleştirme"></a>
### Örnek 3: İsimleri Birleştirme

Verilen bir isimler dizisindeki isimleri virgülle ayrılmış bir metin olarak birleştirmek için `implode()` fonksiyonu kullanılabilir.

```php
$isimler = array("Ahmet", "Mehmet", "Ayşe", "Zeynep");
$birlesikIsimler = implode(", ", $isimler); // "Ahmet, Mehmet, Ayşe, Zeynep"
```

{%- # TOC -%}<a name="php-örnek-4-harf-frekansını-hesaplama"></a>
### Örnek 4: Harf Frekansını Hesaplama

Verilen bir metindeki harf frekansını hesaplamak için `str_split()` fonksiyonu ve bir ilişkisel dizi kullanılabilir.

```php
$metin = "Merhaba dünya!";
$harfler = str_split($metin);
$harfFrekans = array();

foreach ($harfler as $harf) {
    if (ctype_alpha($harf)) {
        $harf = strtolower($harf);
        if (!isset($harfFrekans[$harf])) {
            $harfFrekans[$harf] = 1;
        } else {
            $harfFrekans[$harf]++;
        }
    }
}

print_r($harfFrekans); // Harf frekansını gösterir
```

{%- # TOC -%}<a name="php-örnek-5-rastgele-sıralama"></a>
### Örnek 5: Rastgele Sıralama

Verilen bir dizi elemanlarını rastgele sıralamak için `shuffle()` fonksiyonu kullanılabilir.

```php
$renkler = array("Kırmızı", "Mavi", "Yeşil", "Sarı");
shuffle($renkler); // Rastgele sıralar
```

Dizi fonksiyonları, gerçek dünya uygulamalarında çok çeşitli senaryolarda kullanılabilir. Bu bölümdeki örnekler, dizi fonksiyonlarının nasıl pratik ve etkili bir şekilde kullanılabileceğini göstermektedir.

---

{%- # TOC -%}<a name="php-i̇leri-seviye-konular"></a>
## İleri Seviye Konular

Bu bölümde, dizi işaretçileri, dizi sabitleri, dizi işlevleri ve dizi sınıfları gibi daha ileri seviye konuları ele alacağız. Bu konular, dizi manipülasyonunu daha derinlemesine anlamak ve veri yönetimini daha etkili bir şekilde gerçekleştirmek için önemlidir. Bu konuları detaylı bir şekilde ele alarak daha kapsamlı bir görüş elde edelim.

{%- # TOC -%}<a name="php-dizi-i̇şaretçileri-dizi-elemanlarına-i̇şaretçi-aritmetiği-ile-erişim"></a>
### Dizi İşaretçileri: Dizi Elemanlarına İşaretçi Aritmetiği ile Erişim

Dizi işaretçileri, dizilerin bellekte nasıl saklandığını anlamamıza yardımcı olur. Bir dizi işaretçisi, dizinin başlangıç adresini tutan bir değişkendir. Bu işaretçi, dizi elemanlarına doğrudan erişim sağlar. Ayrıca, işaretçi aritmetiği kullanarak dizi elemanlarına dinamik bir şekilde erişim sağlamak da mümkündür.

Örnek:
```php
$dizi = [10, 20, 30, 40];
$diziIsaretcisi = &$dizi; // Dizi işaretçisi oluşturuldu

$ikinciEleman = $diziIsaretcisi[1]; // 20
$diziIsaretcisi[3] = 50; // Dördüncü elemanı değiştirdik
```

{%- # TOC -%}<a name="php-dizi-sabitleri-değiştirilemez-veri-saklama"></a>
### Dizi Sabitleri: Değiştirilemez Veri Saklama

Dizi sabitleri, değiştirilemeyen ve sabit boyutta olan dizilerdir. `define()` fonksiyonu ile tanımlanırlar ve verileri kolayca saklamak için kullanılırlar. Dizi sabitleri, programın farklı yerlerinde kullanılan sabit değerlerin bir araya getirilmesi için idealdir.

Örnek:
```php
define("RENKLER", ["kırmızı", "mavi", "yeşil"]);
$secilenRenk = RENKLER[1]; // "mavi"
```

{%- # TOC -%}<a name="php-dizi-i̇şlevleri-daha-i̇leri-veri-i̇şleme-i̇mkanı"></a>
### Dizi İşlevleri: Daha İleri Veri İşleme İmkanı

Dizi işlevleri, diziler üzerinde çeşitli işlemler yapmak için kullanılan önceden tanımlanmış fonksiyonlardır. Bu işlevler, veriyi sıralamak, filtrelemek, döndürmek, anahtarları veya değerleri almak gibi çeşitli görevleri kolaylaştırır. Bu işlevlerle daha etkili ve okunabilir kod yazabilirsiniz.

Örnek işlevler:
```php
$dizi = [10, 20, 30, 40];

$anahtarlar = array_keys($dizi); // [0, 1, 2, 3]
$degerler = array_values($dizi); // [10, 20, 30, 40]
```

{%- # TOC -%}<a name="php-dizi-sınıfları-daha-karmaşık-veri-yönetimi"></a>
### Dizi Sınıfları: Daha Karmaşık Veri Yönetimi

Dizi sınıfları, dizileri nesne olarak temsil etmek ve yönetmek için kullanılan önceden tanımlanmış sınıflardır. SPL (Standard PHP Library) kütüphanesi, çeşitli dizi sınıfları sunar. Bu sınıflar, dizileri daha karmaşık senaryolarda işlemek ve yönetmek için kullanışlıdır. Dizi sınıfları, dizi işlevlerine ek olarak daha fazla esneklik ve işlevsellik sunar.

Örnek sınıflar:
```php
$arrayObject = new ArrayObject([10, 20, 30]);
$iterator = $arrayObject->getIterator();
foreach ($iterator as $value) {
    echo $value; // 10, 20, 30
}
```

Bu bölümde, dizi işaretçileri, dizi sabitleri, dizi işlevleri ve dizi sınıfları gibi daha ileri seviye konuları detaylı örneklerle ele aldık. Bu konuları öğrenerek, dizi manipülasyonunu daha derinlemesine anlamak ve daha karmaşık veri yönetimi senaryolarında başarılı olmak mümkündür.

---

Bu makalede, PHP dizi fonksiyonlarının temellerini ve ileri seviye konularını ayrıntılı bir şekilde ele aldık. Artık daha iyi bir şekilde dizileri kullanabilir ve verilerinizi daha etkili bir şekilde yönetebilirsiniz. Herhangi bir sorunuz olursa çekinmeden bana sorabilirsiniz. Bir sonraki yazımda görüşmek üzere.