Menu
CoddyTech

Truy cập giá trị bằng khóa

Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 42 trên 71.

Giờ bạn đã hiểu mảng kết hợp là gì, hãy cùng tìm hiểu cách lấy giá trị từ chúng. Giống như mảng có chỉ số dùng vị trí dạng số, mảng kết hợp dùng khóa bên trong dấu ngoặc vuông.

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

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

Cú pháp (syntax) là $array["key"]: đặt khóa (key) dưới dạng chuỗi bên trong dấu ngoặc vuông, rồi PHP trả về giá trị tương ứng. Cách này dễ đọc hơn nhiều so với việc nhớ rằng tên nằm ở chỉ số 0.

Bạn cũng có thể lưu giá trị đã lấy vào một biến (variable) để dùng sau:

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

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

Khóa phải khớp chính xác, bao gồm cả chữ hoa và chữ thường. Dùng "Name" thay vì "name" sẽ gây lỗi vì PHP xem chúng là các khóa khác nhau.

Đôi khi dữ liệu được gửi đến dưới dạng chuỗi JSON thay vì một mảng PHP viết trực tiếp. JSON (JavaScript Object Notation) là định dạng văn bản phổ biến để biểu diễn dữ liệu có cấu trúc. Ví dụ:

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

Hàm dựng sẵn json_decode() của PHP chuyển một chuỗi JSON thành giá trị PHP. Để lấy một mảng kết hợp, hãy truyền true làm đối số thứ hai:

<?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
?>

Sau khi gọi json_decode($json, true), kết quả là một mảng kết hợp thông thường và bạn có thể truy cập các giá trị trong đó giống hệt như với mọi mảng kết hợp khác: bằng cách dùng $array["key"].

challenge icon

Thử thách

Dễ

Đọc một dòng đầu vào chứa một đối tượng JSON biểu diễn thông tin của một cuốn sách (ví dụ: {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).

Sau đó đọc thêm hai đầu vào:

  • Một chuỗi key1 biểu thị khóa thứ nhất cần truy cập
  • Một chuỗi key2 biểu thị khóa thứ hai cần truy cập

Để chuyển chuỗi JSON thành một mảng kết hợp, hãy dùng hàm dựng sẵn json_decode() với true làm đối số thứ hai:
$array = json_decode($jsonString, true);
Đối số thứ hai true cho PHP biết cần trả về một mảng kết hợp thay vì một đối tượng. Sau khi giải mã, bạn có thể truy cập các giá trị bằng khóa giống như với bất kỳ mảng kết hợp nào, ví dụ: $array["title"].

Tạo một mảng kết hợp từ đầu vào JSON, sau đó:

  1. Truy cập và in ra giá trị tương ứng với key1
  2. Lưu giá trị tương ứng với key2 vào một biến có tên $info
  3. In ra giá trị được lưu trong $info

In mỗi kết quả trên một dòng riêng.

Ví dụ:

Nếu các đầu vào là {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title và author, thì đầu ra sẽ là:

The Great Gatsby
F. Scott Fitzgerald

Nếu các đầu vào là {"name": "Laptop", "brand": "TechCo", "price": 999}, brand và price, thì đầu ra sẽ là:

TechCo
999

Tự làm thử

<?php
// Đọc đầu vào JSON
$jsonInput = trim(fgets(STDIN));

// Đọc hai khóa
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// TODO: Viết code của bạn bên dưới
// 1. Dùng json_decode để tạo mảng (array) kết hợp từ đầu vào JSON
// 2. Truy cập và in ra giá trị (value) ứng với $key1
// 3. Lưu giá trị ứng với $key2 vào biến (variable) $info
// 4. In ra giá trị đã lưu trong $info

?>
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Trình biên dịch PHP online