Tìm khóa bằng 'array_search'
Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 18 trên 68.
in_array() cho bạn biết một giá trị có tồn tại trong mảng hay không, nhưng đôi khi bạn cần biết chính xác giá trị đó nằm ở đâu. Hàm array_search() tìm một giá trị cụ thể trong mảng và trả về khóa hoặc chỉ số tương ứng.
Cách hoạt động như sau:
<?php
$players = ["Alice", "Bob", "Charlie", "Diana"];
$position = array_search("Charlie", $players);
echo $position; // Đầu ra: 2
?>Hàm (function) nhận hai tham số: giá trị bạn đang tìm và mảng cần tìm kiếm. Khi tìm thấy giá trị, array_search() trả về khóa (với mảng được đánh chỉ số, đây là vị trí dạng số bắt đầu từ 0).
Tuy nhiên, có một điểm khác biệt quan trọng về giá trị được trả về. Nếu tìm thấy giá trị, bạn sẽ nhận được khóa. Nếu không tìm thấy giá trị, hàm trả về false:
<?php
$scores = [95, 87, 92, 78];
$found = array_search(92, $scores); // Trả về: 2
$notFound = array_search(100, $scores); // Trả về: false
?>Hàm này đặc biệt hữu ích khi bạn cần xác định vị trí hoặc thứ hạng của một mục, chẳng hạn như tìm thứ hạng của người chơi trên bảng xếp hạng hoặc xác định chỉ số của một phần tử cụ thể để xử lý thêm.
Thử thách
DễBạn sẽ nhận hai đầu vào: một mảng tên sản phẩm ở định dạng JSON và tên sản phẩm cần tìm. Đọc cả hai đầu vào, chuyển chuỗi JSON thành mảng, dùng array_search() để tìm vị trí sản phẩm trong mảng rồi in kết quả. Nếu tìm thấy sản phẩm, hãy in chỉ số của sản phẩm đó. Nếu không tìm thấy sản phẩm, hãy in "Product not found".
Định dạng đầu vào: Hai dòng: dòng đầu tiên chứa một mảng JSON (ví dụ: ["laptop","mouse","keyboard","monitor"]), dòng thứ hai chứa tên sản phẩm cần tìm
Đầu ra mong đợi: Chỉ số của sản phẩm (bắt đầu từ 0) hoặc văn bản "Product not found" nếu sản phẩm không có trong mảng
Tự làm thử
<?php
// Đọc mảng JSON đầu vào
$jsonInput = fgets(STDIN);
$products = (array)json_decode($jsonInput, true);
// Đọc tên sản phẩm cần tìm
$searchProduct = trim(fgets(STDIN));
// TODO: Viết code bên dưới
// Dùng array_search() để tìm vị trí của sản phẩm
// In ra kết quả
echo $result;
?>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 Logic và luồng chương trình
1Hàm nâng cao
Hàm ẩn danhClosure và 'use'Hàm mũi tênHàm callbackDùng 'call_user_func'Hàm biếnTruyền tham chiếuHàm đệ quyÔn tập: tổng hợp về hàm4Mảng đa chiều
Tạo mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuChỉnh sửa phần tử trong mảng 2 chiềuLặp qua các vòng lặp lồng nhauMảng kết hợp 2 chiềuÔn tập: bài tập lưới đơn giản2Thao tác nâng cao với mảng
Thêm phần tử bằng 'array_push'Xóa phần tử bằng 'array_pop'Thêm phần tử vào đầu mảng bằng 'array_unshift'Xóa phần tử đầu mảng bằng 'array_shift'Gộp các mảng được đánh chỉ sốGộp các mảng kết hợpTrích xuất phần tử bằng 'array_slice'Kiểm tra giá trị bằng 'in_array'Tìm khóa bằng 'array_search'Ôn tập: bài tập về danh sách phát3Sắp xếp mảng
Sắp xếp mảng có chỉ số tăng dầnSắp xếp mảng có chỉ số giảm dầnSắp xếp mảng kết hợp theo giá trịSắp xếp mảng kết hợp theo khóaSắp xếp theo thứ tự tự nhiênSắp xếp tùy chỉnh bằng 'usort'Ôn tập: Sắp xếp bảng xếp hạngTự luyện tập: Trình biên dịch PHP online