Lặp qua khóa và giá trị
Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 50 trên 71.
Trong bài học trước, bạn đã học cách foreach giúp bạn truy cập từng giá trị trong một mảng. Nhưng nếu bạn cũng cần khóa thì sao? Điều này đặc biệt hữu ích khi làm việc với mảng kết hợp.
Vòng lặp foreach có cú pháp mở rộng, cung cấp cả khóa và giá trị ở mỗi lần lặp:
<?php
$person = [
"name" => "Alice",
"age" => 25,
"city" => "Paris"
];
foreach ($person as $key => $value) {
echo "$key: $value\n";
}
?>Kết quả in ra:
name: Alice
age: 25
city: ParisCú pháp foreach ($array as $key => $value) gán khóa hiện tại cho $key và giá trị tương ứng cho $value. Bạn có thể đặt tên cho các biến này tùy ý, miễn là tên dễ hiểu.
Cách này cũng áp dụng với mảng có chỉ số, trong đó các khóa là chỉ số số học:
<?php
$colors = ["red", "green", "blue"];
foreach ($colors as $index => $color) {
echo "$index: $color\n";
}
?>Kết quả đầu ra:
0: red
1: green
2: blueViệc truy cập cả khóa lẫn giá trị giúp bạn dễ dàng hiển thị dữ liệu có nhãn hoặc thực hiện các thao tác phụ thuộc vào khóa.
Thử thách
DễĐọc một dòng đầu vào chứa một đối tượng JSON biểu thị một sản phẩm với các khóa và giá trị (ví dụ: {"name":"Laptop","price":"999","stock":"25"}).
Dùng vòng lặp foreach với cú pháp khóa-giá trị để lặp qua dữ liệu sản phẩm. In ra từng khóa và giá trị tương ứng theo định dạng:
[key] => [value]In ra từng cặp khóa-giá trị trên một dòng riêng.
Ví dụ 1:
Nếu đầu vào là {"name":"Laptop","price":"999","stock":"25"}, đầu ra sẽ là:
name => Laptop
price => 999
stock => 25Ví dụ 2:
Nếu đầu vào là {"title":"PHP Basics","author":"John","pages":"350"}, đầu ra sẽ là:
title => PHP Basics
author => John
pages => 350Ví dụ 3:
Nếu đầu vào là {"city":"Paris","country":"France"}, đầu ra sẽ là:
city => Paris
country => FranceTự làm thử
<?php
// Đọc đầu vào JSON
$input = trim(fgets(STDIN));
// Chuyển JSON thành mảng kết hợp
$product = (array)json_decode($input, true);
// TODO: Viết code bên dưới
// Dùng vòng lặp foreach với cú pháp khóa-giá trị để duyệt dữ liệu sản phẩm
// In ra từng khóa và giá trị theo định dạng: [key] => [value]
?>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ản2Biế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 định8Vòng lặp
Vòng lặp forVòng lặp whileVòng lặp foreachLặp qua khóa và giá trịCâu lệnh breakCâu lệnh continueÔn tập: Lặp qua dữ liệu3Cá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