2 Boyutlu İlişkisel Diziler
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 31 / 68.
Sayısal dizinler kullanarak 2D dizilerle çalışıyor olsanız da, hem ana seviyede hem de iç içe geçmiş dizilerde ilişkisel diziler kullanarak daha yapılandırılmış veriler oluşturabilirsiniz. Bu yaklaşım, sayılar yerine dize anahtarlar kullanır ve verilerinizi çok daha açıklayıcı ve anlaşılması daha kolay hale getirir.
Her bir öğenin anlamlı dize (string) anahtarlarına sahip olduğu 2 boyutlu bir ilişkisel diziyi (associative array) şu şekilde oluşturabilirsiniz:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
],
"charlie" => [
"name" => "Charlie Brown",
"grade" => 95
]
];
?>Ana dizi için sayısal indeksler kullanırken, içindeki dizileri ilişkisel (associative) tutarak yaklaşımları karıştırabilirsiniz:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>Bu yapı, kullanıcı profilleri, ürün katalogları veya her bir öğe için birden fazla ilgili özelliği saklamanız gereken herhangi bir senaryo gibi karmaşık verileri düzenlemek için inanılmaz derecede güçlüdür. Dize anahtarları, kodunuzu kendi kendini belgeleyen bir hale getirir ve sayısal konumları hatırlamaya kıyasla bakımı çok daha kolaylaştırır.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayBir girdi alacaksınız: JSON formatında bir ürün envanterini temsil eden 2 boyutlu bir ilişkisel dizi (associative array). Her ürünün anahtar olarak benzersiz bir ürün kimliği (product ID) vardır ve değer, ürünün "name" ve "price" bilgilerini içeren ilişkisel bir dizidir. Girdiyi okuyun, JSON dizesini 2 boyutlu bir ilişkisel diziye dönüştürün, tüm ürünler arasında gezinin ve her ürünün bilgisini şu formatta yazdırın: ID: [product_id] - Name: [name] - Price: $[price]
Her ürün ayrı bir satıra yazdırılmalıdır.
Girdi formatı: Ürün envanterini temsil eden bir JSON nesnesi içeren tek bir satır (örnek: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
Beklenen çıktı: Her ürünün ID: [product_id] - Name: [name] - Price: $[price] formatında ayrı bir satıra yazdırılması
Kopya kağıdı
Hem ana seviyede hem de iç içe dizilerde dize anahtarları kullanarak 2B ilişkilendirilebilir diziler oluşturabilirsiniz:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
]
];
?>Yaklaşımları karıştırarak, ana dizi için sayısal indeksler ve içinde ilişkilendirilebilir diziler de kullanabilirsiniz:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>Dize anahtarları, verilerinizi sayısal konumlara göre kendi kendini belgeleyen ve bakımı daha kolay hale getirir.
Kendin dene
<?php
// JSON girişini oku
$input = fgets(STDIN);
// JSON'u ilişkisel diziye dönüştür
$inventory = (array)json_decode($input, true);
// YAPILACAK: Envanterde gezinmek ve her bir ürünü yazdırmak için kodunuzu aşağıya yazın
?>Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu Sıralama