Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

PHP İlişkisel Diziler Nasıl Kullanılır? Anahtar ve Değer Mantığı

php-iliskisel-diziler-nasil-kullanilir-anahtar-ve-deger-mantigi
Bu yazıda neler var?
  1. PHP ilişkisel dizi nedir? Anahtar ve değer mantığı
  2. İlişkisel dizi nasıl oluşturulur ve değere nasıl erişilir?
  3. Değer güncelleme, yeni anahtar ekleme ve foreach
  4. isset ile array_key_exists arasındaki fark
  5. Ders notlarında sayısal dizi mi, ilişkisel dizi mi?

PHP İlişkisel Diziler Nasıl Kullanılır? sorusunun temel cevabı, elemanlara sıra numarası yerine anlamlı anahtarlarla erişmektir. İlişkisel dizi, verileri anahtar ve değer çiftleri hâlinde tutar; bu nedenle bir ders notuna ulaşırken listedeki konumunu değil, 'matematik' gibi açıklayıcı adını kullanırsın.

Anahtar, hangi verinin isteneceğini belirtir; değer ise o anahtara bağlı olarak saklanan bilgidir. Bu ilişkiyi doğru kurduğunda diziyi oluşturmak ve belirli bir değeri okumak, elemanın sırasını ezberlemekten daha anlaşılır hâle gelir.

PHP ilişkisel dizi nedir? Anahtar ve değer mantığı

PHP'de dizi elemanları anahtar ve değer ilişkisiyle tutulur. İlişkisel dizi, PHP dizisini anlamlı anahtarlarla kullanma biçimi olarak düşünülebilir. Yani ayrı bir temel veri türünden çok, dizideki bilgilere nasıl erişildiğini anlatır. İngilizce kaynaklarda bu kullanım associative array adıyla da karşına çıkar. PHP dizileri anahtarları değerlere bağlayan bir yapı olarak tanımlanır.

Anahtar = veriye ulaşma adı, değer = tutulan bilgi.

matematik => 85 eşleştirmesinde matematik anahtardır, 85 ise değerdir. Buradaki => işareti, anahtar ile o anahtar altında tutulan bilgiyi birbirine bağlar. Gerçek PHP kodunda metin anahtarı tırnak içinde yazılır ve ifade 'matematik' => 85 biçimini alır.

Bu düzeni küçük bir sözlük gibi düşünebilirsin: Aradığın kelime anahtar, karşılığı ise değerdir. matematik anahtarını gören kişi, 85 değerinin hangi bilgiye ait olduğunu dizi sırasını ayrıca incelemeden anlayabilir. Anahtarların açıklayıcı seçilmesi, aynı dizide birden fazla ders veya alan tutulduğunda kodun okunmasını kolaylaştırabilir.

Sayısal dizide elemanlara genellikle 0, 1 ve 2 gibi indekslerle ulaşırsın. Örneğin [85, 90] içinde hangi notun hangi derse ait olduğunu ayrıca bilmek gerekir. ['matematik' => 85, 'fizik' => 90] biçiminde ise bu ilişki doğrudan kodun içinde görünür. Bu, ilişkisel dizinin temel farkıdır.

İlişkisel dizi nasıl oluşturulur ve değere nasıl erişilir?

İlişkisel dizi nasıl oluşturulur ve değere nasıl erişilir?

İlişkisel dizi oluşturmak için köşeli parantezli dizi sözdiziminde her elemanı anahtar => değer biçiminde yazabilirsin. Sol tarafta anahtar, sağ tarafta değer bulunur ve farklı anahtar değer çiftleri virgülle ayrılır. Metin anahtarını doğrudan yazarken tırnak içinde belirtmeli, değere ulaşırken aynı anahtarı köşeli parantez içinde kullanmalısın. PHP'de dizi elemanlarına dizi[anahtar] biçimiyle erişilir.

<?php
$notlar = [
    'matematik' => 85,
    'fizik' => 90
];

echo $notlar['matematik'];
?>

Bu kodda $notlar değişkeni ilişkisel diziyi tutar. 'matematik' => 85 satırında 'matematik' anahtar, 85 değerdir. $notlar['matematik'] ifadesi, $notlar dizisinde matematik anahtarına bağlı değeri seçer. Ardından echo komutu seçilen değeri ekrana yazdırır.

Beklenen çıktı:

85

Bu örnekte erişim sırasında dizinin sırasını veya elemanın kaçıncı sırada olduğunu yazmadın. Doğrudan anlamlı anahtarı kullandın. Metin anahtarını oluştururken ve erişirken aynı yazımı korumak, hangi değerin seçileceğini açıkça belirtir. Anahtarın yerine yalnızca sayısal bir konum yazmak, ilişkisel dizinin sağladığı anlamlı erişim avantajını ortadan kaldırabilir.

Değer güncelleme, yeni anahtar ekleme ve foreach

Değer güncelleme, yeni anahtar ekleme ve foreach

İlişkisel dizide mevcut bir anahtara yeniden değer atadığında o anahtarın önceki değeri değişir. Daha önce kullanılmayan bir anahtara değer atadığında ise diziye yeni bir anahtar ve değer çifti eklenir. Böylece dizinin tamamını yeniden oluşturmadan tek bir değeri güncelleyebilir veya yeni bir bilgi ekleyebilirsin.

foreach yapısında yalnızca değerleri dolaşabileceğin gibi anahtar ve değeri birlikte de alabilirsin. $ders değişkeni anahtarı, $not değişkeni ise o anahtarın değerini temsil eder. Değişken adları farklı seçilebilir, ancak bu örnekteki adlar kodun amacını daha okunur hâle getirir. Ayrıntılı sözdizimi için PHP’nin foreach dokümantasyonuna bakabilirsin.

<?php
$notlar = [
    'matematik' => 85,
    'fizik' => 78,
    'biyoloji' => 90
];

$notlar['fizik'] = 82;
$notlar['tarih'] = 88;

foreach ($notlar as $ders => $not) {
    echo "Ders: $ders | Not: $not" . PHP_EOL;
}

Beklenen çıktı:

Ders: matematik | Not: 85
Ders: fizik | Not: 82
Ders: biyoloji | Not: 90
Ders: tarih | Not: 88

Örnekte fizik anahtarı dizide zaten bulunduğu için 78 değeri 82 ile değiştirilir. tarih anahtarı başlangıçta bulunmadığından yeni bir çift olarak eklenir. Döngü çalıştığında her turda bir ders adı ve o derse ait not alınarak istenen biçimde ekrana yazdırılır.

isset ile array_key_exists arasındaki fark

isset() ile array_key_exists() arasındaki temel fark, null değerinin nasıl değerlendirildiğidir. isset(), anahtarın bulunmasının yanında değerinin null olmamasını da kontrol eder. array_key_exists() ise yalnızca anahtarın dizide bulunup bulunmadığına bakar. Bu nedenle anahtar mevcut ve değeri null olsa bile array_key_exists() sonucu true olabilir.

<?php
$durum = ['proje' => null];

var_dump(isset($durum['proje']));
var_dump(array_key_exists('proje', $durum));

var_dump(isset($durum['sinav']));
var_dump(array_key_exists('sinav', $durum));

Beklenen çıktı:

bool(false)
bool(true)
bool(false)
bool(false)

İlk iki sonuç proje anahtarına aittir. Anahtar dizide vardır, fakat değeri null olduğu için isset() false döndürür. array_key_exists() ise anahtarın varlığını gördüğü için true döndürür. Son iki sonuçta sinav anahtarı dizide hiç bulunmadığından her iki kontrol de false verir. Kısacası, bir değerin kullanılabilir olup olmadığını kontrol etmek ile anahtarın dizide bulunup bulunmadığını kontrol etmek aynı işlem değildir.

Ders notlarında sayısal dizi mi, ilişkisel dizi mi?

PHP'de sayısal ve ilişkisel dizi ayrı veri türleri değil, diziyi kullanma biçimleridir. Sayısal modelde notlar sıra numarası gibi indekslerle tutulur: 0 matematik, 1 fizik, 2 biyoloji anlamına gelir. İlişkisel modelde ders adı anahtar, not ise değerdir. Anahtar, değere ulaşmak için kullanılan isim veya indekstir; değer ise anahtarın işaret ettiği veridir. PHP dizileri tamsayı ve metin anahtarlarla çalıştığı için iki model de kullanılabilir.

Kodla karşılaştırma

<?php
$sayisalNotlar = [85, 78, 90];

$iliskiselNotlar = [
    'matematik' => 85,
    'fizik' => 78,
    'biyoloji' => 90
];

echo $sayisalNotlar[1], "n";
echo $iliskiselNotlar['fizik'], "n";

$sayisalNotlar[1] = 80;
$iliskiselNotlar['fizik'] = 80;

echo $sayisalNotlar[1], "n";
echo $iliskiselNotlar['fizik'], "n";

Beklenen çıktı:

78
78
80
80

İki modelde de fizik notuna erişilip güncellenir. Fark, sayısal dizide sıra numarasının, ilişkisel dizide ise ders adının kullanılmasıdır.

Model Örnek veri Örnek erişim Okunabilirlik Erişim kolaylığı Güncelleme Uygun durum
Sayısal dizi [85, 78, 90] $notlar[1], fizik Sıra eşlemesi bilinmelidir. İndeks biliniyorsa doğrudan $notlar[1] = 80; Konum ve sıra anlam taşıyorsa
İlişkisel dizi ['matematik' => 85, 'fizik' => 78, 'biyoloji' => 90] $notlar['fizik'] Ders adı kodda görünür. Adıyla doğrudan $notlar['fizik'] = 80; Belirli derse adla erişiliyorsa
  1. Anlamlı bir etiket varsa: Ders adı gibi açıklayıcı bir anahtar kullanıyorsan ilişkisel dizi seç.
  2. Konum veya sıra verinin anlamıysa: Sıralı dolaşım baskınsa sayısal dizi seç.
  3. Tek bir elemana adıyla sık erişiyor veya güncelliyorsan: İlişkisel dizi pratik olur. Belirleyici olan kullanım işlemidir; hiçbir model her durumda tek doğru değildir.

Bu nedenle ders notlarında seçim, verinin adla mı yoksa konumla mı kullanılacağına göre yapılır.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara