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"].
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
key1biểu thị khóa thứ nhất cần truy cập - Một chuỗi
key2biể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 đó:
- Truy cập và in ra giá trị tương ứng với
key1 - Lưu giá trị tương ứng với
key2vào một biến có tên$info - 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 FitzgeraldNếu các đầu vào là {"name": "Laptop", "brand": "TechCo", "price": 999}, brand và price, thì đầu ra sẽ là:
TechCo
999Tự 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
?>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
4Toán tử so sánh và logic
Toán tử so sánhBằng nhau và đồng nhấtToán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giản7Mảng, phần 2: Mảng kết hợp
Giới thiệu về mảng kết hợpTruy cập giá trị bằng khóaThay đổi giá trị bằng khóaThêm cặp khóa-giá trị mớiKiểm tra khóa có tồn tạiÔn tập: Kho dữ liệu khóa-giá trị2Biến và kiểu dữ liệu
SốChuỗi và dấu ngoặc képGiá trị BooleanQuy ước đặt tênÔn tập: khởi tạo biếnBiến rỗngNối chuỗiNhận đầu vào từ người dùngChuyển đổi sang kiểu dữ liệu khác5Logic điều kiện
Câu lệnh ifIf và elseToán tử ba ngôiToán tử kết hợp nullCâu lệnh switchÔn tập: đưa ra quyết định3Các toán tử cơ bản
Toán tử số họcToán tử chia lấy dưToán tử lũy thừaPhép gán kết hợpTăng/giảmThứ tự ưu tiên của toán tửÔn tập: phép tính đơn giảnToán tử chuỗiTự luyện tập: Trình biên dịch PHP online