Menu
Coddy logo textTech

Accessing Values by Key

Coddy'nin PHP Journey'sinin Temeller bölümünün bir parçası — ders 42 / 71.

İlişkili dizilerin (associative arrays) ne olduğunu anladığınıza göre, şimdi onlardan nasıl değer alacağımızı öğrenelim. İndeksli dizilerin sayısal konumları kullanması gibi, ilişkili diziler de köşeli parantez içinde anahtarları (keys) kullanır.

<?php
$person = [
    "name" => "Alice",
    "age" => 25,
    "city" => "Paris"
];

echo $person["name"]; // Alice
echo $person["age"];  // 25
?>

Sözdizimi $array["key"] şeklindedir—anahtarı köşeli parantezlerin içine bir dize olarak yerleştirin ve PHP ilişkili değeri döndürür. Bu, ismin 0. indekste olduğunu hatırlamaktan çok daha okunabilirdir.

Alınan değeri daha sonra kullanmak üzere bir değişkende de saklayabilirsiniz:

<?php
$product = [
    "title" => "Laptop",
    "price" => 999
];

$itemName = $product["title"];
echo $itemName; // Laptop
?>

Anahtar, büyük/küçük harf duyarlılığı dahil olmak üzere tam olarak eşleşmelidir. "name" yerine "Name" kullanmak, PHP bunları farklı anahtarlar olarak değerlendirdiği için bir hataya neden olur.

Bazen veriler bir PHP dizi sabiti yerine bir JSON dizesi olarak gelir. JSON (JavaScript Object Notation), yapılandırılmış verileri temsil etmek için yaygın bir metin formatıdır. Örneğin:

$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

PHP'nin yerleşik json_decode() fonksiyonu, bir JSON dizesini bir PHP değerine dönüştürür. İlişkisel bir dizi elde etmek için ikinci argüman olarak true değerini geçirin:

<?php
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

$book = json_decode($json, true);

echo $book["title"];  // Dune
echo $book["author"]; // Frank Herbert
echo $book["year"];   // 1965
?>

json_decode($json, true) fonksiyonunu çağırdıktan sonra, sonuç normal bir ilişkisel dizidir ve değerlerine tıpkı diğer ilişkisel dizilerde olduğu gibi $array["key"] kullanarak erişebilirsiniz.

challenge icon

Görev

Kolay

Bir kitabın bilgilerini temsil eden bir JSON nesnesi içeren bir girdi satırı okuyun (örneğin, {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).

Ardından iki girdi daha okuyun:

  • Erişilecek ilk anahtarı temsil eden bir key1 dizesi
  • Erişilecek ikinci anahtarı temsil eden bir key2 dizesi

JSON dizesini bir ilişkisel diziye (associative array) dönüştürmek için, ikinci argümanı true olan yerleşik json_decode() fonksiyonunu kullanın:
$array = json_decode($jsonString, true);
İkinci argüman olan true, PHP'ye bir nesne yerine ilişkisel bir dizi döndürmesini söyler. Kod çözüldükten sonra, değerlere herhangi bir ilişkisel dizide olduğu gibi anahtar yoluyla erişebilirsiniz, örneğin $array["title"].

JSON girdisinden bir ilişkisel dizi oluşturun, ardından:

  1. key1 ile ilişkili değeri bulun ve yazdırın
  2. key2 ile ilişkili değeri $info adlı bir değişkende saklayın
  3. $info içinde saklanan değeri yazdırın

Her sonucu ayrı bir satıra yazdırın.

Örnek:

Girdiler {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title ve author ise, çıktı şöyle olmalıdır:

The Great Gatsby
F. Scott Fitzgerald

Girdiler {"name": "Laptop", "brand": "TechCo", "price": 999}, brand ve price ise, çıktı şöyle olmalıdır:

TechCo
999

Kendin dene

<?php
// JSON girişini oku
$jsonInput = trim(fgets(STDIN));

// İki anahtarı oku
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// TODO: Kodunuzu aşağıya yazın
// 1. json_decode kullanarak JSON girişinden bir ilişkisel dizi oluşturun
// 2. $key1 ile ilişkili değere erişin ve yazdırın
// 3. $key2 ile ilişkili değeri $info adlı bir değişkende saklayın
// 4. $info içinde saklanan değeri yazdırın

?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler