Giới thiệu
PHP có một số lượng lớn các hàm tích hợp sẵn như các hàm toán học, chuỗi, ngày tháng, mảng, v.v. Cũng có thể định nghĩa một hàm theo yêu cầu cụ thể. Chức năng như vậy được gọi là chức năng do người dùng xác định.
Hàm là một khối câu lệnh có thể sử dụng lại để thực hiện một tác vụ cụ thể. Khối này được xác định bằng từ khóa hàm và được đặt tên bắt đầu bằng bảng chữ cái hoặc dấu gạch dưới. Hàm này có thể được gọi từ bất kỳ đâu trong chương trình bất kỳ lúc nào.
Cú pháp
//define a function function myfunction($arg1, $arg2, ... $argn) { statement1; statement2; .. .. return $val; } //call function $ret=myfunction($arg1, $arg2, ... $argn);
Hàm có thể được định nghĩa với tùy chọn nhưng bất kỳ số lượng đối số nào. Tuy nhiên, phải cung cấp cùng một số đối số trong khi gọi. Phần thân của hàm có thể chứa bất kỳ mã PHP hợp lệ nào, tức là các điều kiện, vòng lặp, v.v. (thậm chí các hàm hoặc lớp khác có thể được định nghĩa bên trong một hàm). Sau khi thực hiện các câu lệnh trong khối, điều khiển chương trình sẽ quay trở lại vị trí mà từ đó nó được gọi bất kể sự hiện diện của câu lệnh cuối cùng của khối chức năng dưới dạng trả về. Một biểu thức phía trước câu lệnh return trả về giá trị của nó cho môi trường gọi.
chức năng do người dùng xác định Ví dụ
Trong ví dụ sau cho thấy định nghĩa và lệnh gọi đến một hàm do người dùng định nghĩa sayhello ()
Ví dụ
<?php //function definition function sayHello(){ echo "Hello World!"; } //function call sayHello(); ?>
Tập lệnh này sẽ tạo ra kết quả sau khi chạy từ dòng lệnh -
Đầu ra
Hello World!Hàm
có đối số
Trong ví dụ sau, một hàm được định nghĩa với hai đối số chính thức
Ví dụ
<?php function add($arg1, $arg2){ echo $arg1+$arg2 . "\n"; } add(10,20); add("Hello", "World"); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
30 PHP Warning: A non-numeric value encountered in line 3
Trong lần gọi thứ hai, hai giá trị chuỗi được đưa ra dưới dạng đối số của hàm. Vì PHP không hỗ trợ toán tử + cho chuỗi, một cảnh báo sẽ được phát ra.
hàm trả về
Hàm do người dùng xác định trong ví dụ sau sẽ xử lý các đối số được cung cấp và truy xuất một giá trị vào môi trường gọi
Ví dụ
<?php function add($arg1, $arg2){ return $arg1+$arg2; } $val=add(10,20); echo "addition:". $val. "\n"; $val=add("10","20"); echo "addition: $val"; ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
addition:30 addition:30
Trong lần gọi thứ hai, ngay cả khi các đối số là chuỗi, PHP sẽ ép chúng thành số nguyên và thực hiện phép cộng
Hàmvới giá trị đối số mặc định
Trong khi xác định một hàm, một giá trị mặc định của đối số có thể được gán. Nếu giá trị không được gán cho agument như vậy trong khi gọi hàm, giá trị mặc định này sẽ được sử dụng để xử lý hàm bên trong. Trong ví dụ sau, một hàm được định nghĩa với đối số có giá trị mặc định
Ví dụ
<?php function welcome($user="Guest"){ echo "Hello $user\n"; } //overrides default welcome("admin"); //uses default welcome(); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
Hello admin Hello Guest
Trong lần gọi thứ hai, hàm được gọi mà không truyền giá trị. Trong trường hợp này, đối số người dùng nhận giá trị mặc định của nó.
Hàmvới số lượng đối số thay đổi
Có thể định nghĩa một hàm có khả năng nhận số đối số thay đổi. Tên của đối số chính thức trong định nghĩa hàm có tiền tố là ... mã thông báo. Ví dụ sau có hàm add () để thêm danh sách các số được cho dưới dạng đối số
Ví dụ
<?php function add(...$numbers){ $ttl=0; foreach ($numbers as $num){ $ttl=$ttl+$num; } return $ttl; } $total=add(10,15,20); echo "total= $total\n"; echo "total=". add(1,2,3,4,5). "\n"; ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
total= 45 total=15
Cũng có thể lấy danh sách các đối số được truyền cho một hàm với sự trợ giúp của func_get_args () hàm số. Chúng ta có thể chạy một vòng lặp PHP để duyệt qua từng giá trị trong danh sách các đối số được truyền vào. Trong trường hợp đó, định nghĩa hàm không có đối số chính thức.
Ví dụ
<?php function add(){ $numbers=func_get_args(); $ttl=0; foreach ($numbers as $num){ $ttl=$ttl+$num; } return $ttl; } $total=add(10,15,20); echo "total= $total\n"; echo "total=". add(1,2,3,4,5). "\n"; ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
total= 45 total=15
chức năng trong một chức năng khác
Một chức năng có thể được xác định bên trong khối nội dung của chức năng khác. Tuy nhiên, hàm bên trong không thể được gọi trước khi hàm bên ngoài được gọi.
Ví dụ
<?php function hello(){ echo "Hello\n"; function welcome(){ echo "Welcome to TutorialsPoint\n"; } } //welcome(); hello(); welcome(); ?>
Xóa bình luận để gọi wlcome () bfore hello (). Thông báo lỗi sau sẽ tạm dừng chương trình -
Fatal error: Uncaught Error: Call to undefined function welcome()
Đầu ra
Nhận xét dòng và chạy lại
Hello Welcome to TutorialsPoint
Hàm đệ quy
Một hàm gọi chính nó được gọi là hàm đệ quy. Việc gọi chính nó một cách vô điều kiện sẽ tạo ra vòng lặp vô hạn và dẫn đến lỗi hết bộ nhớ vì ngăn xếp đầy. Chương trình sau gọi hàm factorial () một cách đệ quy
Ví dụ
<?php function factorial($n){ if ($n < 2) { return 1; } else { return ($n * factorial($n-1)); } } echo "factorial(5) = ". factorial(5); ?>
Đầu ra
factorial(5) = 120