Các hàm được tham số hóa trong PHP là các hàm có tham số. Bạn có thể truyền bất kỳ số lượng tham số nào bên trong một hàm. Các tham số được truyền này hoạt động như các biến bên trong hàm của bạn
Chúng được chỉ định bên trong dấu ngoặc đơn, sau tên hàm
Đầu ra phụ thuộc vào các giá trị động được truyền dưới dạng tham số vào hàm
Ví dụ tham số hóa PHP 1
Cộng và trừ
Trong ví dụ này, chúng ta đã truyền hai tham số $x và $y bên trong hai hàm add[] và sub[]
đầu ra
Ví dụ tham số hóa PHP 2
Phép cộng và phép trừ với số động
Trong ví dụ này, chúng ta đã truyền hai tham số $x và $y bên trong hai hàm add[] và sub[]
đầu ra
Chúng tôi đã thông qua số sau,
Bây giờ nhấp vào nút THÊM, chúng tôi nhận được đầu ra sau
Bây giờ, nhấp vào nút SUBTRACTION, chúng tôi nhận được đầu ra sau
Một hàm trong PHP có thể được định nghĩa để chấp nhận đầu vào từ việc gọi môi trường/tập lệnh dưới dạng đối số. Các đối số này được đưa ra dưới dạng danh sách được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn trước tên hàm. Lưu ý rằng trong khi gọi một hàm, phải truyền cùng một số đối số cho nó
PHP hỗ trợ gọi một hàm bằng cách truyền giá trị, tham chiếu, đối số với giá trị mặc định và bằng cách truyền số lượng đối số thay đổi
chức năng với các đối số
Trong ví dụ sau, một hàm được định nghĩa với hai đối số hình thức. Khi hàm này được gọi bằng cách chuyển đối số theo giá trị. Các đối số của hàm trở thành các biến cục bộ của nó. Do đó, mọi thay đổi về giá trị của đối số bên trong hàm không phản ánh bên ngoài nó
Ở đây, giá trị của $x được thay đổi bên trong hàm, nhưng nếu chúng ta kiểm tra giá trị của nó sau khi gọi hàm thì nó không thay đổi
Thí dụ
Bản thử trực tiếp
"; } $x=10; $y=20; add[$x,$y]; //outside function $x has previous value. echo $x; ?>
đầu ra
Điều này sẽ tạo ra kết quả sau. -
30 10
Truyền mảng cho hàm
Trong ví dụ sau, hàm add[] được định nghĩa để nhận mảng làm đối số. Bên trong hàm, các phần tử mảng được duyệt qua vòng lặp foreach
Thí dụ
Bản thử trực tiếp
đầu ra
Điều này sẽ tạo ra kết quả sau. -
sum = 6
Truyền đối số bằng tham chiếu
Các giá trị được truyền cho các đối số của hàm theo giá trị. Do đó, những thay đổi đối với giá trị của đối số bên trong hàm không được phản ánh bên ngoài nó. Khi các đối số được truyền theo tham chiếu, các thay đổi được chuyển sang giá trị của đối số bên ngoài nó
Để nhận giá trị theo tham chiếu, tên của đối số phải có tiền tố là ký hiệu $
Thí dụ
Bản thử trực tiếp
"; } $x=5; $y=7; echo "before calling function x=$x y=$y
"; swap[$x, $y]; echo "after calling function x=$x y=$y
"; ?>
đầu ra
Điều này sẽ tạo ra kết quả sau. -
before calling function x=5 y=7 inside function x=7 y=5 after calling function x=7 y=5
Giá trị của biến $x và $y được hoán đổi cho nhau trong hàm swap[]. Vì, các biến được truyền theo tham chiếu, nên các biến cũng hiển thị các giá trị đã sửa đổi bên ngoài hàm
Gợi ý kiểu [Khai báo kiểu]
PHP trên thực tế là một ngôn ngữ kiểu động. Do đó, không cần thiết phải khai báo một biến với kiểu của nó [như trong C/C++ hoặc Java]. Tuy nhiên, khai báo kiểu của các đối số trong một hàm cho phép trình phân tích cú pháp phát hiện các kiểu dữ liệu không chính xác được truyền cho hàm
cú pháp
//define a function with type hints function myfunction[type $arg1, type $arg2]{ .. .. }
Tất cả các kiểu dữ liệu PHP tiêu chuẩn bao gồm các kiểu vô hướng, mảng, lớp/giao diện, có thể lặp lại và đối tượng là các kiểu hợp lệ để cung cấp gợi ý kiểu trong khai báo hàm
Thí dụ
Bản thử trực tiếp
"; echo "total=". add[1,2,3,4,5]. "
"; ?>
đầ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 hàm func_get_args[]. 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. Trong trường hợp đó, định nghĩa hàm không có đối số chính thức
Thí dụ
Bản thử trực tiếp
________số 8đầu ra
Điều này sẽ tạo ra kết quả sau. -
addition=30 addition=11
Lưu ý rằng trong lần gọi hàm add[] thứ hai, số float được đưa ra làm đối số, nhưng vẫn không có lỗi/cảnh báo nào được hiển thị. Điều này là do nội bộ PHP buộc float thành số nguyên để thực hiện phép cộng. Để ngăn chuyển đổi loại tự động như vậy, hãy sử dụng khai báo cấu trúc với nghiêm ngặt_types=1