PHP: Hàm (Function)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Video hướng dẫn:

Cú pháp định nghĩa hàm

function tên_hàm([danh_sách_tham_số]) {

    khối_lệnh;

    [return giá_trị;]

}

+ Trong PHP việc định nghĩa hay khai báo một hàm thì không có kiểu trả về.

+ Với PHP bạn có quyền định nghĩa hàm nằm trong thân hàm khác mà nhưng việc sử dụng một hàm không khác nhau giữa xây dựng hàm trong thân một hàm và ngoài mọi hàm.

+ tên_hàm không được trùng với từ khóa và phải tuân theo quy tắc đặt tên chung.

+ danh_sách_tham_số: có thể có hoặc không, dùng để tiếp nhận dữ liệu để xử lý. Cho phép gán giá trị mặc định cho tham số.

+ Hàm có thể có giá trị trả về hoặc không.

+ Các câu lệnh được quyền gọi bất kỳ hàm nào đã được khai báo và đã được định nghĩa.

+ return giá_trị; :

  - Trả một giá trị về cho nơi gọi hàm, hàm có thể trả về bất kỳ giá trị có kiểu gì.

  - Thoát khỏi hàm, bỏ qua mọi câu lệnh khác.

Ví dụ về định nghĩa hàm:

Ví dụ sau định nghĩa một hàm có tên demo không có danh_sách_tham_số, không có lệnh return giá_trị; :

<?php
function demo(){
 echo"<br>Bạn đang trong hàm demo()";
}
?>

Ví dụ sau định nghĩa một hàm có tên tinhTong để tính tổng của 2 giá trị a và b nhận được từ tham số:

<?php
function tinhTong($a, $b){
 $c = $a + $b;
 echo"<br>$a + $b = $c";
}
?>

Ví dụ sau định nghĩa hàm có tên tinhBietThucDelta dùng để tính và trả về giá trị của biệt thức delta tính được cho nơi gọi hàm:

<?php
function tinhBietThucDelta($a, $b, $b){
 $delta = $b*$b - 4*$a*$c;
 return $delta;
}
?>

Ví dụ sau định nghĩa hàm tinhTich dùng để tính tích của 2 số từ 2 tham số, trong đó 1 tham số được cài đặt giá trị mặc định:

<?php
function tinhTich($a, $b=0){
 $c = $a*$b;
 echo"$a * $b = $c";
}
?>

Lời gọi hàm

+ Lưu ý: Hàm phải được định nghĩa hoặc khai báo trước khi gọi.

+ Cú pháp:

tên_hàm([danh_sách_đối_số]);

Đối với danh_sách_đối_số: nếu có danh_sách_tham_số thì bắt buộc phải có danh_sách_đối_số, số lượng của chúng phải tương đương nhau.

Ví dụ về lời gọi hàm:

Gọi hàm demo():

<?php
function demo(){
 echo"<br>Bạn đang trong hàm demo()";
}

demo();
?>

Gọi hàm tinhTong():

<?php
function tinhTong($a, $b){
 $c = $a + $b;
 echo"<br>$a + $b = $c";
}

tinhTong(10, 20); #gọi hàm
?>

Ở trên ta thấy rằng lời gọi hàm tính tổng truyền đi 2 đối số là 10 và 20, trong đó 10 sẽ được truyền cho $a, còn 20 sẽ được truyền cho $b.

Bắt buộc phải có đúng 2 đối số trong trường hợp này, không được thiếu hay thừa.

Gọi hàm tinhBietThucDelta():

<?php
function tinhBietThucDelta($a, $b, $b){
 $delta = $b*$b - 4*$a*$c;
 return $delta;
}

tinhBietThucDelta(1, 3, 2);
?>

Ở lời gọi trên, khi bạn chạy bạn sẽ không thấy kết quả, lý do là vì ở phần định nghĩa không echo ra kết quả, mà chỉ trả về kết quả về nơi gọi.​

Bạn phải làm như sau mới thấy kết quả:

<?php
function tinhBietThucDelta($a, $b, $b){
 $delta = $b*$b - 4*$a*$c;
 return $delta;
}

echo tinhBietThucDelta(1, 3, 2);
?>

Hoặc:

<?php
function tinhBietThucDelta($a, $b, $b){
 $delta = $b*$b - 4*$a*$c;
 return $delta;
}

$delta = tinhBietThucDelta(1, 3, 2);
echo $delta;
?>

Gọi hàm tinhTich():

<?php
function tinhTich($a, $b=0){
 $c = $a*$b;
 echo"$a * $b = $c";
}

tinhTich(10, 20); #kết quả là: 200
tinhTich(10); #kết quả là: 0
?>

Biến tổng thể và biến cục bộ

Biến tổng thể (global) là biến được khai báo ngoài tất cả các hàm.

Biến cục bộ (local) là biến được khai báo trong một hàm nào đó.

Biến cục bộ chỉ có tác dụng đối với hàm chứa nó.

Biến tổng thể có thể được sử dụng trong tất cả các hàm.

Để gọi biến tổng thể từ một hàm nào đó, ta sử dụng quy cách sau:

$GOLOBALS['Tên_biến_tổng_thể']

Hoặc:

global $Tên_biến_tổng_thể;

Ví dụ:

$position = "m";

function change_pos(){

    $position = "s";

}

change_pos();

echo"$position"; // print "m"

Ta thấy biến $position có giá trị không đổi sau khi gọi hàm change_pos(), vì vậy ta cần phải viết lại như sau:

$position = "m";

function change_pos(){

    global $position;

    $position = "s";

}

change_pos();

echo ("$position"); // print "s"

Hoặc:

$position = "m";

function change_pos() {

    $GOLOBALS[$position] = "s";

}

change_pos();

echo"$position"); // print "s"

» Tiếp: Download AppServ 2.5.9
« Trước: Cookie & Session
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!