⊗ppSpFnIFC 12 of 83 menu

Callback trong các hàm dựng sẵn trong PHP

Trong PHP có một số hàm dựng sẵn mà tham số của chúng nhận callback. Chúng ta sẽ tìm hiểu nguyên lý chung khi làm việc với chúng thông qua ví dụ về hàm array_map. Hàm này nhận callback làm tham số đầu tiên, và tham số thứ hai - một mảng. Hàm áp dụng callback cho từng phần tử của mảng và trả về mảng đã được thay đổi.

Hãy xem xét các biến thể sử dụng hàm này với kiến thức chúng ta đã có trước đây.

Biến thể 1

Lấy căn bậc hai từ mỗi phần tử của mảng bằng hàm dựng sẵn sqrt. Để làm điều này, chúng ta truyền tham số callback là một chuỗi chứa tên của hàm đó:

<?php $arr = [1, 2, 3, 4, 5]; $res = array_map('sqrt', $arr); var_dump($res); ?>

Biến thể 2

Tính bình phương mỗi phần tử của mảng bằng hàm thông thường do chúng ta tạo. Để làm điều này, chúng ta truyền tham số callback là một chuỗi chứa tên hàm đó:

<?php $arr = [1, 2, 3, 4, 5]; function func($num) { return $num ** 2; } $res = array_map('func', $arr); var_dump($res); ?>

Biến thể 3

Chuyển hàm của chúng ta thành hàm ẩn danh (anonymous function), được gán vào một biến:

<?php $arr = [1, 2, 3, 4, 5]; $func = function ($num) { return $num ** 2; }; $res = array_map($func, $arr); var_dump($res); ?>

Biến thể 4

Truyền trực tiếp hàm ẩn danh làm tham số:

<?php $arr = [1, 2, 3, 4, 5]; $res = array_map(function ($num) { return $num ** 2; }, $arr); var_dump($res); ?>

Biến thể 5

Sử dụng hàm mũi tên (arrow function):

<?php $arr = [1, 2, 3, 4, 5]; $res = array_map(fn ($num) => $num ** 2, $arr); var_dump($res); ?>

Biến thể 6

Bây giờ, giả sử lũy thừa mà chúng ta cần tính cho số được xác định bởi một biến bên ngoài callback. Chúng ta sẽ sử dụng biến này, truy cập nó thông qua use:

<?php $arr = [1, 2, 3, 4, 5]; $pow = 3; $res = array_map(function ($num) use ($pow) { return $num ** $pow; }, $arr); var_dump($res); ?>

Biến thể 7

Viết lại đoạn mã trước bằng hàm mũi tên. Bây giờ biến $pow sẽ tự động có thể truy cập được:

<?php $arr = [1, 2, 3, 4, 5]; $pow = 3; $res = array_map(fn ($num) => $num ** $pow, $arr); var_dump($res); ?>

Bài tập thực hành

Cho một mảng các chuỗi. Chuyển đổi văn bản của mỗi phần tử mảng thành chữ hoa.

Cho một mảng các chuỗi. Đảo ngược văn bản của mỗi phần tử mảng sao cho các ký tự được sắp xếp theo thứ tự ngược lại.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối