Computer >> Máy Tính >  >> Lập trình >> PHP

Các hàm do người dùng định nghĩa trong PHP

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àm

vớ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àm

vớ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