Menu

PHP İlişkisel Diziler: Anahtar Değer Çiftleri

PHP ilişkisel dizisi değerleri sizin adlandırdığınız anahtarlar altında saklar: $user = ['name' => 'Ada', 'age' => 36]; $user['name'] olarak okunur. Çift eklemeyi, değiştirmeyi ve silmeyi, anahtarlar ve değerler üzerinde dolaşmayı, tüm anahtarları veya değerleri almayı, bir anahtarı kontrol etmeyi ve anahtara ya da değere göre sıralamayı öğrenin.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

İlişkisel bir dizi her değeri sizin seçtiğiniz bir anahtar altında saklar ve key => value olarak yazılır: $user = ['name' => 'Ada', 'age' => 36];. Bir değeri $user['name'] ile okuyun, anahtarına atama yaparak ekleyin ya da değiştirin: $user['email'] = 'ada@example.com';.

Diğer dillerde aynı yapıya sözlük (dictionary), map veya hash denir. PHP'de anahtarları 0, 1, 2 yerine dizge olan sıradan bir dizidir.

Çift ekleme, değiştirme ve silme

Var olmayan bir anahtara atama yapmak onu sona ekler. Var olan bir anahtara atama yapmak değerini değiştirir ve konumunu korur. unset() bir çifti siler.

array_push() burada işe yaramaz: yalnızca sayısal anahtarlı değerler ekleyebilir. Aynı anda birkaç çift eklemek için yeni değerlerin kazandığı array_merge($stock, $more) ya da var olan anahtarların değerlerini koruduğu $stock + $more kullanın; array_merge sayfası ikisini karşılaştırır.

Anahtarlar ve değerler üzerinde dolaşma

foreach ($array as $key => $value) çiftleri eklendikleri sırayla dolaşır. Yalnızca değerlere ihtiyacınız olduğunda $key => kısmını çıkarın.

Tüm anahtarları veya tüm değerleri alma

array_keys() anahtarları düz bir liste olarak, array_values() ise değerleri döndürür; ikisi de 0'dan yeniden indekslenir. array_keys() fonksiyonuna ikinci bir argüman verirseniz yalnızca o değeri tutan anahtarları döndürür, bir değere ait tüm anahtarları bu şekilde bulursunuz.

Tek bir anahtar için array_search() ilk eşleşmeyi, eşleşme yoksa false döndürür. array_search sayfası bu sonucu neden !== false ile karşılaştırmanız gerektiğini açıklar.

Bir anahtarın var olup olmadığını kontrol etme

isset($arr['key']) olağan ve en hızlı kontroldür, ama anahtar var olup null tuttuğunda false döndürür. array_key_exists('key', $arr) bu durumda true döndürür. Varsayılan bir değerle okumak için ?? operatörü ikisini birden yapar.

Anahtara veya değere göre sıralama

ksort() anahtara, asort() değere göre sıralar; ikisi de her anahtarı değerine bağlı tutar. krsort() ve arsort() ters sırada sıralar. İlişkisel bir dizide sort() kullanmayın: anahtarları atar ve 0'dan yeniden numaralar.

Bunların hepsi yerinde sıralar ve true döndürür, bu yüzden $sorted = ksort($arr) size bir dizi değil true verir. Özel sıralamalar için uasort() ve uksort() kullanılır.

Ters çevirme, sayma ve JSON'a dönüştürme

Anahtar değer verileriyle birkaç tek satırlık işlem sık sık karşınıza çıkar: array_flip() anahtarlarla değerleri yer değiştirir, array_count_values() her değerin kaç kez geçtiğini sayar ve json_encode() diziyi bir JSON nesnesine çevirir.

Sık yapılan hata: olmayan bir anahtarı okumak

Eksik bir anahtarı okumak null döndürür, ama sizin PHP'niz bir uyarı da yazdırır:

<?php
$user = ['name' => 'Ada'];
echo $user['phone'];
Warning: Undefined array key "phone" in /var/www/html/index.php on line 3

Okumaya hiçbir zaman uyarı vermeyen ?? ile bir varsayılan verin ya da eksik durum için ayrı bir dal gerekiyorsa önce isset() ile kontrol edin.

Çift tırnaklı bir dizgenin içinde aramayı süslü parantezle sarın, "{$user['email']}". Onlar olmadan PHP yalnızca tırnaksız "$user[email]" biçimini kabul eder ve bunu yanlış yazmak kolaydır.

Sıkça Sorulan Sorular

PHP'de nasıl ilişkisel dizi oluştururum?

Her çifti köşeli parantez içinde key => value olarak yazın: $prices = ['apple' => 1.2, 'pear' => 0.9];. Bir değeri $prices['apple'] ile okuyun.

PHP'de bir ilişkisel diziyi anahtara göre nasıl sıralarım?

A'dan Z'ye için ksort($arr);, Z'den A'ya için krsort($arr); çağırın. İkisi de yerinde sıralar, her değeri anahtarıyla birlikte tutar ve sıralanmış diziyi değil true döndürür.

PHP'de bir ilişkisel dizi üzerinde nasıl dolaşırım?

İki değişkenli foreach kullanın: foreach ($prices as $fruit => $price) { echo "$fruit: $price\n"; }. Çiftler eklendikleri sırayla gelir.

Bir ilişkisel dizinin tüm anahtarlarını nasıl alırım?

array_keys($arr) anahtarları indisli bir dizi olarak, array_values($arr) ise değerleri döndürür. array_keys($arr, $value) yalnızca değeri $value değerine eşit olan anahtarları döndürür.

PHP ilişkisel dizisi ekleme sırasını korur mu?

Evet. PHP dizileri sıralı eşlemelerdir, bu yüzden diziyi ksort(), asort() veya benzer bir fonksiyonla sıralayana kadar foreach, print_r ve json_encode çiftleri eklediğiniz sırayla görür.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA