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.

Artık assosiyatif dizilerin ne olduğunu anladığınıza göre, onlardan değerleri nasıl alacağımızı öğrenelim. Sayısal indeksli diziler sayısal konumları kullandığı gibi, assosiyatif diziler köşeli parantezler içindeki anahtarları kullanır.

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

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

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

Ayrıca, alınan değeri daha sonra kullanmak için bir değişkende saklayabilirsiniz:

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

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

Anahtar tam olarak eşleşmelidir—büyük/küçük harf dahil. "Name" yerine "name" kullanmak bir hata oluşturur çünkü PHP bunları farklı anahtarlar olarak kabul eder.

Bazen veri bir PHP dizisi yerine JSON dizesi olarak gelir. JSON (JavaScript Object Notation), yapılandırılmış verileri temsil etmek için yaygın bir metin formatıdır. PHP'nin yerleşik json_decode() fonksiyonu bir JSON dizesini PHP değerine dönüştürür. İkinci argüman olarak true verdiğinizde, bir nesne yerine ilişkisel dizi döndürür, böylece değerlere tanıdık $array["key"] sözdizimiyle erişebilirsiniz.

<?php
$json = '{"name": "Alice", "age": 25}';

$data = json_decode($json, true);

echo $data["name"]; // Alice
echo $data["age"];  // 25
?>
challenge icon

Görev

Kolay

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

Ardından iki giriş daha okuyun:

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

JSON dizesini ilişkisel bir diziye dönüştürmek için yerleşik json_decode() işlevini ikinci argüman olarak true ile kullanın:
$array = json_decode($jsonString, true);
İkinci argüman true, PHP'ye bir nesne yerine ilişkisel dizi döndürmesini söyler. Kodlandıktan sonra, değerlere herhangi bir ilişkisel dizi gibi anahtarla erişebilirsiniz, ör. $array["title"].

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

  1. key1 ile ilişkili değeri erişip yazdırın
  2. key2 ile ilişkili değeri $info adlı bir değişkende saklayın
  3. $info'da saklanan değeri yazdırın

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

Örnek:

Eğer girişler {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title ve author ise, çıktı şu şekilde olmalıdır:

The Great Gatsby
F. Scott Fitzgerald

Eğer girişler {"name": "Laptop", "brand": "TechCo", "price": 999}, brand ve price ise, çıktı şu şekilde olmalıdır:

TechCo
999

Kopya kağıdı

İlişkisel bir diziden değerleri almak için, kare parantezler içindeki anahtarı kullanın:

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

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

Söz dizimi $array["key"]'dir. Anahtarlar büyük/küçük harfe duyarlıdır.

Alınan değerleri değişkenlerde saklayabilirsiniz:

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

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

Bir JSON dizesini ilişkisel bir diziye dönüştürmek için json_decode($jsonString, true) kullanın. İkinci argüman true PHP'ye bir nesne yerine dizi döndürmesini söyler:

$json = '{"name":"Alice","age":25}';
$data = json_decode($json, true);

echo $data["name"]; // Alice
echo $data["age"];  // 25

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 ilişkilendirilmiş dizi oluşturun
// 2. $key1 ile ilişkili değeri erişip yazdırın
// 3. $key2 ile ilişkili değeri $info adlı bir değişkende saklayın
// 4. $info'da 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