Hàm ẩn danh Array_map PHP

Hàm ẩn danh là một trong những tính năng hay và hữu ích trong PHP đang được sử dụng rộng rãi. Các hàm ẩn danh tạo điều kiện để viết cấu trúc tốt và mã dễ đọc hơn. Nó cũng có thể được sử dụng như các cuộc gọi lại

Chức năng ẩn danh là gì?

Các hàm ẩn danh tương tự như các hàm thông thường và cũng chấp nhận các đối số và giá trị trả về. Sự khác biệt chính giữa cả hai chức năng ẩn danh không có tên được chỉ định và có thể được gán trong một biến. Các chức năng này hữu ích nhất khi gọi lại. Xem ví dụ sau để tạo một chức năng ẩn danh đơn giản

$func = function($name){
return $name;
};

echo $func('The Elementary');
?>

Vì một hàm ẩn danh là một biểu thức nên nó có thể được sử dụng theo nhiều cách khác nhau và hữu ích

Gán cho một biến

Một hàm ẩn danh có thể được gán trong một biến, thậm chí có thể được lưu trữ nhiều hàm ẩn danh khác nhau trong một mảng

$greeting = function($name){
return 'Hello '.$name. ' !';
};

//Call the anonymous function
echo $greeting('William');
echo '
';
echo $greeting('Sachin');
?>

Đầu ra sẽ là.
Xin chào William.
Xin chào Sachin.

Bây giờ, chúng tôi lưu trữ các chức năng ẩn danh bên trong một mảng. Xem ví dụ sau

Người dùng có ba lựa chọn (1, 2, 3) cho máy của nhà cung cấp. Có ba loại vật phẩm Chai nước, Nước trái cây và Kẹo

$machine = [
1=> function(){
echo "Got Water bottle
";
},
2=> function(){
echo "Got Juice
";
},
3=> function(){
echo "Got Sweets
";
},
];

$choice = 1;
echo $machine[$choice]();
$choice = 2;
echo $machine[$choice]();
$choice = 3;
echo $machine[$choice]();
?>

nếu $choice = 1 thì đầu ra sẽ là “Có chai nước”.
nếu $choice = 2 thì đầu ra sẽ là “Got Juice”
nếu $choice = 3 thì đầu ra sẽ là “Got Sweets”

Sử dụng các chức năng ẩn danh như đóng cửa

Một bao đóng không là gì ngoài một hàm ẩn danh sử dụng một hoặc nhiều biến và truy cập khi được gọi. Nói cách khác, một bao đóng có khả năng tương tác với các biến từ môi trường bên ngoài

$greetingWord = "Hello";

$greeting = function($name) use($greetingWord) {
return $greetingWord.' '.$name;
};

echo $greeting('Sachin');

//Output:
//Hello Sachin
?>
Gọi lại

Hàm gọi lại được truyền dưới dạng đối số cho hàm khác. Nhiều chức năng tích hợp sẵn chấp nhận gọi lại. Hãy lấy một hàm mảng của PHP array_map()

sử dụng nội tuyến

$numbers = [30, 40, 10, 60, 50];
print_r(array_map(function{
return $no + 5;
}, $numbers)
);
?>

Đầu ra sẽ là.
Mảng ( [0] => 35 [1] => 45 [2] => 15 [3] => 65 [4] => 55)

Sử dụng một chức năng bình thường như gọi lại

Một chức năng bình thường cũng có thể được sử dụng như gọi lại. Trong trường hợp này, tên của hàm được chuyển dưới dạng gọi lại. Xem ví dụ sau với hàm array_filter(). Trong ví dụ này, chúng tôi lọc các số chia hết cho 2

function checkVisibility($no)
{
if($no%2 == 0){
return $no;
}
}

$numbers = [10, 20, 15 , 17, 18, 7];
print_r(array_filter($numbers, 'checkVisibility'));
?>

Đầu ra sẽ là.
Mảng ( [0] => 10 [1] => 20 [4] => 18 )

Sử dụng các chức năng tích hợp làm gọi lại

$names = ['Sachin', 'Tom', 'William', 'Rohit'];

print_r(array_map('strtoupper', $names));

//Output:
//Array ( [0] => SACHIN [1] => TOM [2] => WILLIAM [3] => ROHIT )
?>
//Trim all post data
print_r(array_map('trim', $_POST));


//Remove all HTML Tags from post data
print_r(array_map('strip_tags', $_POST));
?>

Sử dụng gọi lại với các lớp

Các ví dụ sau giúp bạn hiểu việc sử dụng các cuộc gọi lại với các lớp

Sử dụng gọi lại với phương thức bình thường

Giả sử, có một mảng các phần tử số và cần thêm 5 vào mỗi phần tử

class Number {
public function adding5($no)
{
return $no + 5;
}
}

$noObj = new Number();
$nos = [5, 40, 3, 11, 77];
print_r(array_map([$noObj, 'adding5'], $nos));

//OR

print_r(array_map(['Number', 'adding5'], $nos));
?>

Đầu ra sẽ là.
Mảng ( [0] => 10 [1] => 45 [2] => 8 [3] => 16 [4] => 82 )

Trong hàm array_map() tham số đầu tiên là một mảng có hai phần tử, $this đầu tiên cho biết Số lớp hiện tại và thứ hai là tên phương thức (“adding5”) của Số lớp. Phương thức lớp add5() cũng có thể là riêng tư