Hàm trong PHP

Một phần của tài liệu Lập trình web động với PHP và MySql cơ bản và nâng cao của học viện NIIT (Trang 33)

V. Sử dụng hàm trong PHP

1. Hàm trong PHP

chỉ cần phải viết duy nhất một lần, và có thể được sử dụng nhiều lần trong toàn bộ chương trình, và thậm chí có thể được tái sử dụng trong các ứng dụng khác.

Nhờ khả năng tái sử dụng trong các dự án khác nhau, các lập trình viên có kinh nghiệm thường tìm cách xây dựng hoặc sưu tập các hàm thành các thư viện để tận dụng trong các ứng dụng khác, qua đó giảm thời gian, chi phí cũng như công sức xây dựng các ứng dụng mới.

Một hàm sẽ được xác định bởi tên hàm và các tham số đầu vào liên quan đến hàm đó. Thông thường, hàm sẽ trả về một kết quả nào đó. Đối với các hàm dựng sẵn, ta có thể hình dung các hàm như các hộp đen, nhận các dữ liệu đầu vào, xử lý rồi trả kết quả về cho tên hàm.

Chúng ta có thể hình dung cách thức sử dụng hàm như sau:

Các câu lệnh như echo, print... của PHP thực chất phải được gọi là các hàm chứ không phải là một câu lệnh.

Ví dụ: Để giải thích rõ hơn khái niệm hàm, ta quay trở lại với "câu lệnh" echo quen thuộc. Hàm echo(chuỗi) có tên là echo, tham số đầu vào là một chuỗi, và chức năng (kết quả mà nó trả về) là một dòng chữ (được lưu trong biến chuỗi) được trả về trình duyệt.

PHP cung cấp một thư viện các hàm dựng sẵn rất phong phú, đủ để sử dụng trong hầu hết các ứng dụng. 2. Một số hàm thông dụng trong PHP a. Các hàm xmng PHP hỗ trợ khá nhiều hàm để xử lý mảng, chúng ta có thể sử dụng các hàm này để phát triển nhanh các ứng dụng. Hàm in mảng

Để in các giá trị lưu trong mảng, chúng ta có thể sử dụng hàm print_r(). Tên hàm Giá trị trả về Tham số 1 Tham số 2 ... Tham số n

Cú pháp:

Void print_r(mixed thông_tin)

Hàm print_r sẽ hiển thị thông tin về một biến theo cách mà con người có thể đọc được. Nếu như thông_tin được hiển thị là một chuỗi hay một số thì giá trị của thông tin sẽ được in ra màn hình. Trong trường hợp thông_tin là một mảng, các giá trị sẽ được trình bày theo cú pháp khóa và giá trị.

Hàm xây dựng mảng

Để xây dựng một mảng, ngoài cách đã giới thiệu ở mục II chương 4, chúng ta cũng có thể sử dụng hàm array().

Cú pháp:

array array(tham_số);

Hàm này sẽ trả về một mảng các tham số. Nếu có nhiều hơn 1 tham số, các tham số phải được đặt cách nhau bởi một dấu phẩy.

Ví dụ:

$can=array (‘giáp’, ‘ất’, ‘bính’,’đinh’,’mậu’,’kỷ’, ‘canh’, ‘tân’, ‘nhâm’, ‘quý’);

Trong trường hợp muốn xác định chỉ số của mảng, tham số cần phải đưa vào theo cấu trúc

chỉ_số=>giá_trị. Ví dụ:

$array = array( 1, 1, 1, 1, 1, 8=>1, 4=>1, 19, 3=>13);

Cú pháp chỉ_số=>giá_trị, được ngăn cách nhau bởi các dấu phẩy, sẽ định nghĩa một chỉ số của mảng và gán giá trị cho phần tử của mảng có chỉ số chỉ_số. Trong trường hợp chúng ta không sử dụng cú pháp trên, các chỉ số sẽ được tự động sinh ra và bắt đầu bằng 0. Nếu như chỉ số là một số nguyên, chỉ số tiếp theo sẽ được tự động sinh ra bằng cách tăng thêm chỉ số trước đó 1 đơn vị. Khi có hai chỉ số trùng nhau, chỉ số cuối cùng sẽ ghi đè lên chỉ số trước đó.

Ví dụ:

$array = array( 1, 1, 1, 1, 1, 8=>1, 4=>1, 19, 3=>13); print_r($array);

Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 13 [4] => 1 [8] => 1 [9] => 19 )

Hàm kiểm tra sự tồn tại của một giá trị trong mảng

Để xác định một giá trị nào đó có nằm trong mảng đã cho hay không, chúng ta có thể sử dụng hàm in_array ().

Cú pháp:

bool in_array ( mixed giá_trị_cần_tìm, array mảng_cần_tìm [, bool strict])

Hàm này sẽ kiểm tra xem giá_trị_cần_tìm có nằm trong mảng_cần_tìm không? Nếu có, hàm sẽ trả về giá trị TRUE, ngược lại hàm sẽ trả về giá trị FALSE.

Hàm đếm số phần tử trong mảng

Để đếm số phần tử trong một mảng, chúng ta có thể sử dụng hàm count(). Cú pháp:

int count (tên_mảng); Ví dụ:

$a[0] = 1; $a[1] = 3; $a[2] = 5;

$result = count ($a); // $result == 3

Hàm kiểm tra sự tồn tại của một mảng

Để kiểm tra xem một biến có phải là một mảng hay không, ta có thể sử dụng hàm is_array().

bool is_array(tên_mảng)

Hàm này sẽ kiểm tra xem tên mảng có tồn tại hay không, và nó có phải là một mảng hay không. Nếu như tên_mảng xác định một mảng, hàm sẽ trả về giá trị TRUE, ngược lại sẽ trả về giá trị FALSE.

Hàm tính tổng các giá trị trong mảng

Trong trường hợp chúng ta có một mảng số, ta có thể tính tổng các giá trị trong mảng với hàm array_sum(). Cú pháp: array_sum (tên_mảng); Ví dụ: $a[0] = 1; $a[1] = 3; $a[2] = 5; echo (array_sum($a)); // in ra 9. Hàm sắp xếp mảng

Trong nhiều trường hợp, chúng ta cần sắp xếp lại mảng theo thứ tự tăng dần. Để làm điều này, chúng ta có thể sử dụng hàm sort().

Cú pháp:

void sort (array arr [, int sort_flags])

Hàm này chịu trách nhiệm sắp xếp dữ liệu trong mảng arr theo chiều tăng dần. Tham số tùy chọn sort_flags được dùng để xác định việc sắp xếp mảng theo loại dữ liệu nào. Tham số này có thể nhận một trong những giá trị sau đây

• SORT_REGULAR: So sánh các giá trị theo cách thông thường • SORT_NUMERIC: So sánh theo dạng số

• SORT_STRING: So sánh theo dạng chuỗi

Để sắp xếp mảng theo chiều giảm dần, ta có thể dùng hàm rsort với cú pháp tương tự. Bài tập:

Viết chương trình tạo ra một mảng các giá trị. Sắp xếp và in các phần tử trong mảng lên màn hình.

b. Các hàm xử lý chuỗi

Xử lý chuỗi là một trong những công việc mà các lập trình viên thường xuyên phải dùng đến. PHP hỗ trợ khá nhiều hàm để xử lý chuỗi.

Các hàm cắt bỏ khoảng trắng đầu và cuối chuỗi

Khi chúng ta so sánh chuỗi do người dùng nhập vào, rất có thể người dùng vô tình gõ thừa một dấu cách ở đầu hoặc cuối chuỗi. Vì vậy, trước khi thực hiện phép toán so sánh chuỗi, hãy sử dụng các hàm sau đây để cắt bỏ những khoảng trắng ở trước hoặc sau chuỗi:

Hàm ltrim

Cú pháp: string ltrim(string str)

Tác dụng: Trả về một chuỗi đã loại bỏ hết tất cả các ký tự trắng ở bên trái chuỗi str.

Ví dụ:

echo “|” . ltrim (“ Trang chủ “) . “|”;// In ra chuỗi “|Trang chủ |”

Hàm rtrim

Cú pháp: string rtrim(string str)

Tác dụng: Trả về một chuỗi đã loại bỏ hết tất cả các ký tự trắng ở bên phải chuỗi str.

Ví dụ:

echo “|” . rtrim (“ Trang chủ “) . “|”;// In ra chuỗi “| Trang chủ|”

Hàm trim

Cú pháp: string trim(string str)

Tác dụng: Trả về một chuỗi đã loại bỏ hết tất cả các ký tự trắng ở đầu và cuối chuỗi str.

Ví dụ:

echo “|” . trim (“ Trang chủ “) . “|”;// In ra chuỗi “|Trang chủ|”

Chú ý: Ngoài các ký tự trắng, các ký tự sau đây cũng bị loại bỏ:

• " " (ASCII 32 (0x20)), ký tự trắng mặc định trong bảng mã ASCII). • "\t" (ASCII 9 (0x09)), ký tự Tab.

• "\r" (ASCII 13 (0x0D)), ký tự về đầu dòng. • "\0" (ASCII 0 (0x00)), NUL-byte.

• "\x0B" (ASCII 11 (0x0B)), ký tự Tab dọc.

Các hàm chuyển đổi chữ in hoa – in thường

Hàm chuyển chuỗi sang chữ in thường

Cú pháp:

string strtolower ( string str)

Hàm này sẽ trả về một chuỗi, trong đó các ký tự sẽ được chuyển sang chữ thường. Ví dụ:

$str = "Mary Had A Little Lamb and She LOVED It So"; $str = strtolower($str);

echo $str; # sẽ in ra: mary had a little lamb and she loved it so

Hàm chuyển chuỗi sang chữ in hoa

Cú pháp:

string strtoupper ( string str)

Hàm này sẽ trả về một chuỗi, trong đó các ký tự sẽ được chuyển sang chữ thường. Ví dụ:

$str = "Mary Had A Little Lamb and She LOVED It So"; $str = strtoupper ($str);

echo $str; # sẽ in ra: MARY HAD A LITTLE LAMB AND SHE LOVED IT SO

Chú ý: Đối với các ký tự tiếng Việt có dấu, các hàm này có thể sẽ xử lý không chính xác.

Các hàm tìm kiếm và thay thế

Tìm vị trí đầu tiên của chuỗi con trong một chuỗi lớn

Để xác định vị trí của một chuỗi văn bản nào đó trong chuỗi lớn hơn, ta sử dụng hàm strpos()

Cú pháp:

Hàm này sẽ tìm và trả về số nguyên xác định vị trí đầu tiên của chuỗi_cần_tìm trong

chuỗi_gốc. Nếu như không tìm thấy chuỗi_cần_tìm trong chuỗi_gốc, hàm sẽ trả về giá trị FALSE.

Hàm thay thế chuỗi

Để thay thế một chuỗi con bằng một chuỗi khác trong chuỗi đã cho, chúng ta sử dụng hàm str_replace()

Cú pháp:

mixed str_replace ( mixed chuỗi_cần_tìm, mixed chuỗi_sẽ_thay, mixed chuỗi_mẹ)

Hàm này sẽ tìm chuỗi_cần_tìm trong chuỗi_mẹ và thay thế chuỗi tìm thấy bởi

chuỗi_sẽ_thay. Cuối cùng hàm trả về một chuỗi. Các tham số đầu vào có thể là một mảng.

Ví dụ: <?

$tmp= str_replace (“<br”,”<hr>”,”Tên ca khúc: <BR> $cakhuc”); echo $tmp;

?>

Hàm lấy một phần chuỗi

Để lấy một phần chuỗi trong chuỗi đã cho, chúng ta có thể sử dụng hàm substr. Cú pháp:

string substr ( string string, int start [, int length])

Hàm này sẽ lấy một phần chuỗi đã cho, bắt đầu từ vị trí start và lấy một chuỗi có chiều dài

length. Chú ý rằng ký tự đầu tiên được đánh số vị trí là 0. Ví dụ:

$laychuoi = substr("abcdef", 1, 3); // trả về "bcd"

Hàm này chấp nhận các tham số âm. Nếu như vị trí start là một số âm, hàm sẽ tính vị trí từ phía bên tay phải sang:

$laychuoi = substr("abcdef", -3, 1); // trả về "d"

Để tính chiều dài của một chuỗi đã cho, chúng ta có thể sử dụng hàm strlen() Cú pháp:

int strlen ( string str)

Hàm này sẽ trả về chiều dài của chuỗi str.

Hàm mã hóa dữ liệu md5

Cú pháp: string md5 (string str)

Tác dụng: Trả về một chuỗi đã bị mã hóa theo cú pháp md5. Chuỗi sau khi đã bị mã hóa sang dạng md5 không thể khôi phục trở về nguyên bản như trước đó.

Người ta thường dùng hàm này để mã hóa mật khẩu trước khi lưu vào các cơ sở dữ liệu để đảm bảo rằng bản rõ của mật khẩu không thể bị xem trộm bởi một người thứ 2 nào khác.

Ví dụ:

$Password=”123456”; $Password=md5($Password);

echo $Password;// In ra chuỗi “e10adc3949ba59abbe56e057f20f883e” Bài tập:

Viết chương trình thực hiện các công việc sau:

- Tạo một form HTML chứa một ô textbox cho phép người dùng nhập vào một dãy số, các số được cách nhau bởi dấu phảy.

- Viết chương trình PHP để xử lý chuỗi số do người dùng nhập vào:

o Kiểm tra xem chuỗi có rỗng không? Nếu có thì tạo một liên kết yêu cầu nhập lại.

o Nếu chuỗi không rỗng:

 Loại bỏ các ký tự trắng trước và sau chuỗi

 Tìm và kiểm tra xem trong chuỗi có số 15 không? Nếu có thì in ra vị trí của chuỗi đó, tiếp đó thay thế chuỗi 15 bằng chuỗi 1,5.

 Mã hoá phần tử cuối cùng của mảng đã cho ở dạng md5 và in chuỗi mã hoá lên trình duyệt.

c. Các hàm toán học

PHP cung cấp một số hàm toán học. Hầu hết các hàm này tương đồng với các hàm toán học trong các ngôn ngữ khác.

Bảng dưới đây cung cấp một số hàm toán học trong PHP:

STT Tên hàm Ý nghĩa

1. Sin(x) Tính sin(x)

2. Abs(x) Trả về trị tuyệt đối của x

3. Ceil(x) Trả về số nguyên nhỏ nhất >=x

4. Floor(x) Trả về số nguyên lớn nhất <=x

5. Rand(x,y) Trả về một số nguyên ngẫu nhiên nằm

giữa x và y

6. Sqrt(x) Trả về căn bậc 2 của x

7. Round(x,y) Làm tròn x tới y chữ số thập phân

8. Pow(x,y) Trả về x mũ y

9 Pi() Trả về số pi

a. Các hàm xử lý thời gian và ngày tháng

PHP cung cấp một số hàm hỗ trợ việc xử lý thời gian và ngày tháng. - Hàm getdate()

Hàm này được sử dụng để lấy thời gian và ngày tháng hiện hành. Hàm trả về một mảng chứa các thông tin về thời gian và ngày tháng hiện hành.

Ví dụ: <?php

$today = getdate(); print_r($today); ?>

Hàm này sẽ trả về một mảng với các thông số như sau: Array ( [seconds] => 40 // Số giây từ 0-59 [minutes] => 58 // Số phút từ 0-59 [hours] => 21 // Số giờ từ 0-23 [mday] => 17 // Số ngày từ 1-31

[wday] => 2 // Thứ trong tuần, từ 0 (chủ nhật) đến 6 (thứ 7) [mon] => 6 // Số tháng trong năm, từ 1-12

[year] => 2003 // Số năm

[yday] => 167 // Số ngày trong năm, từ 0 - 365 [weekday] => Tuesday // Ngày ở dạng tiếng Anh [month] => June // Tháng ở dạng tiếng Anh

[0] => 1055901520 // Số giây tính từ mốc 00:00:00 ngày 1/1/1970 )

- Hàm microtime(): Trả về số microseconds Ví dụ: Tính thời gian thực thi của chương trình: <?php

$time_start = microtime(true); // Làm cái gì đó

$time_end = microtime(true); $time = $time_end - $time_start;

echo "Chương trình được thực hiện trong $time giây\n"; ?>

- Hàm time(): Trả về số giây tính từ mốc 00:00:00 ngày 1/1/1970 -

b. Các hàm kiểm tra dữ liệu

PHP cung cấp một số hàm hỗ trợ kiểm tra dữ liệu. Hầu hết các hàm này đều trả về dạng true/false.

Bảng dưới đây liệt kê một số hàm kiểm tra dữ liệu thông dụng

STT Tên hàm Ý nghĩa

1. isset($x) Kiểm tra xem biến $x đã được thiết

lập hay chưa? Trả về true nếu $x đã được thiết lập, ngược lại là false

2. is_numeric($x) Kiểm tra xem biến $x có phải là một số hay không? Trả về true nếu $x là một số, ngược lại là false

3. is_int($x) Kiểm tra xem biến $x có phải là một

số nguyên hay không? Trả về true nếu $x là một số nguyên, ngược lại là false 4. is_array($x) Kiểm tra xem biến $x có phải là một

mảng hay không? Trả về true nếu $x là một mảng, ngược lại là false

một chuỗi, ngược lại là false

6. is_object($x) Kiểm tra xem biến $x có phải là một đối tượng hay không? Trả về true nếu $x là một đối tượng, ngược lại là false 7. checkdate ( int $month, int $day,

int $year ) Trả về true nếu $month, $day, $year xác định một tháng, ngày, năm hợp lệ. Ngược lại là false.

3. Các hàm do người dùng định nghĩaa. Xây dng hàm trong PHP a. Xây dng hàm trong PHP

Trong PHP, chúng ta có thể tự xây dựng các hàm của mình. Trước khi sử dụng, chúng ta cần phải tiến hành cài đặt hàm.

Cú pháp cài đặt một hàm có thể được tóm tắt như sau:

function ten_ham (thamso1, thamso2, ..., thamson) {

// đoạn chương trình xử lý dữ liệu bên trong hàm return gia_tri;

}

Trong đó:

- function là từ khóa,

- ten_ham là tên hàm do chúng ta tự đặt. Tên hàm thường sử dụng các ký hiệu chữ cái, chữ số và dấu gạch dưới.

- Các thamsoi là các tham số đưa vào. Các tham số khi khai báo thường ở dưới dạng các biến, còn khi sử dụng thì có thể là biến, hằng, hay một giá trị nào đó. Một hàm có thể không có hoặc có nhiều tham số.

- Giá trị gia_tri sau từ khóa return là giá trị trả về sau khi gọi hàm. Giá trị này có thể là giá trị của một biến, hay một giá trị cụ thể nào đó.

Chú ý: Chúng ta có thể sử dụng từ khóa return để trả một giá trị về cho tên hàm, nhưng cũng có thể không cần phải trả về một giá trị nào cả.

function chao() {

return "<B>Xin chào</B>"; }

Ví dụ 2:

Khi xây dựng các ứng dụng liên quan đến CSDL, ta thường phải xuất dữ liệu ra một bảng nào đó.

Một bảng trong HTML được cấu thành từ các cặp thẻ <table>, <tr>, <td> lồng vào nhau, ở mức độ nhỏ nhất của cấu trúc trên là một ô.

Một ô có thể có chứa thông tin (nằm giữa các cặp thẻ <td></td>), có thể chứa các thuộc tính định dạng (style)...

Chúng ta sẽ xây dựng một hàm để tự động sinh ra nội dung của một ô. Hàm này có 2 tham

Một phần của tài liệu Lập trình web động với PHP và MySql cơ bản và nâng cao của học viện NIIT (Trang 33)

Tải bản đầy đủ (DOC)

(78 trang)
w