PHP part2. Hàm - Định nghĩa hàm, thao tác với Array - String - Number - Time trong PHP
Ở bài trước chúng ta đã làm quen với PHP thông qua các câu hỏi cũng như các khái niệm về biến và toán tử trong PHP. Ở bài này mình xin giới thiệu tiếp về hàm, cách định nghĩa hàm cũng như thao tác với Array - String - Number - Time trong PHP. Hàm - Định nghĩa hàm trong PHP để hiểu rõ thế nào là ...
Ở bài trước chúng ta đã làm quen với PHP thông qua các câu hỏi cũng như các khái niệm về biến và toán tử trong PHP. Ở bài này mình xin giới thiệu tiếp về hàm, cách định nghĩa hàm cũng như thao tác với Array - String - Number - Time trong PHP.
Hàm - Định nghĩa hàm trong PHP
để hiểu rõ thế nào là hàm trong PHP và cách định nghĩa nó như nào thì ta sẽ lại đi trả lời từng câu hỏi sau:
Hàm là gì ?
- Hàm là tập hợp một hay nhiều câu lệnh được xây dựng để thực hiện một chức năng nào đó.
- Khối lệnh này chỉ cần xây dựng 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í dụ:
<?php function createBox(){ echo '<div style="awidth: 200px; height: 200px;">'; echo '<p>test create box <span>(200x200)</span></p>'; echo '</div>'; } createBox(); createBox(); ?>
Có bao nhiêu hàm trong PHP?
- Hàm trong PHP được xây dựng vô cùng đa dạng và phong phú, bao gồm các hàm xử lý chuỗi, số, mảng, ngày tháng, …
- Chúng ta tạm thời chia làm 2 nhóm hàm
- Nhóm hàm được cung cấp sẵn bởi PHP
- Nhóm hàm do người dùng tự định nghĩa
ví dụ:
<?php function sumDigit($number){ $sum = 0; while($number >= 0){ $digit = $number % 10; $sum += $digit; $number = ($number - $digit) / 10; } return $sum; } ?>
khi định nghĩa một hàm thì cần chú ý các vấn đề sau:
- giá trị trả về của hàm
- Hàm trả về một giá trị
- Hàm trả về nhiều giá trị
- Hàm trả về kết quả true hoặc false
- tham số truyền vào hàm đó
Phân biệt biến toàn cục và biến cục bộ
- Local (biến cục bộ) là các biến được khai báo trong hàm và chỉ có thể được truy cập trong hàm đó. Biến cục bộ được xóa sau khi hàm của nó thực thi xong
- Global (biến toàn cục) là các biến được khai báo bên ngoài tất cả các hàm. Được sử dụng tại bất kỳ vị trí nào trong chương trình
ví dụ:
<?php $value = "ABC"; function createBox($content, $awidth = 550, $height = 550){ $result = '<div style="awidth: '.$awidth.'px; height: '.$height.'px;">'; $result .= '<p>'.$content.'</p>'; $result .= '</div>'; echo $GLOBALS["value"]; return $result; } $boxTest = createBox("Box Test"); echo $boxTest; ?>
- Phân biệt tham chiếu và tham trị
- Khi truyền biến vào hàm theo kiểu tham trị. Sau khi kết thúc hàm giá trị của biến truyền vào không thay đổi
- Khi truyền biến vào hàm theo kiểu tham chiếu. Sau khi kết thúc hàm giá trị của biến truyền vào sẽ thay đổi tùy theo phần xử lý của hàm đó
- include và require
Câu lệnh include và require cùng có chức năng là kéo một file nào đó vào file hiện tại. Trong quá trình kéo file vào file hiện tại, nếu gặp lỗi:
- Câu lệnh require sẽ ngừng thực hiện chương trình
- Câu lệnh include sẽ tiếp tục thực hiện chương trình
Thao tác với mảng
mảng là gì?
Mảng là một biến đặc biệt và có thể lưu trữ nhiều giá trị (còn biến thì không). Trong PHP có 3 loại mảng:
- mảng số nguyên
- mảng kết hợp
- mảng đa chiều.
Mảng số nguyên | Mảng kết hợp | Mảng đa chiều | |
---|---|---|---|
Tên gọi khác | Mảng liên tục | Mảng không liên tục | Mảng lồng |
Đặc điểm | Chí số của mảng là số | Chí số của mảng là chuỗi hoặc số | Mỗi phần tử trong mảng chính có thể là một mảng và mỗi phần tử trong mảng con cũng có thể là một mảng |
In mảng | Câu lệnh for | Câu lệnh foreach |
Các hàm xử lý mảng:
Hàm | Chức năng |
---|---|
print_r($$rray) | Xem cấu trúc của mảng |
count($$rray) | Trả về giá trị kiểu số nguyên là số phần tử của mảng |
array_values($$rray) | Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $$rray |
array_keys($$rray) | Trả về một mảng liên tục có các phần tử có giá trị là khóa lấy từ các phần tử của mảng $$rray. |
array_pop($$rray) | Loại bỏ phần tử cuối cùng của mảng. Hàm trả về phần tử cuối cùng đã được loại bỏ. |
array_shift($$rray) | Loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ. |
array_unique($$rray) | Loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới |
unset() | Xóa phần tử ở vị trí bất kỳ của mảng |
array_push(array,array, array,val1, val2,...,val2, ... , val2,...,valn) | Thêm một hoặc nhiều phần tử vào cuối mảng array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng array mới |
array_unshift(array,array, array,val1, val2,...,val2, ... , val2,...,valn) | Thêm một hoặc nhiều phần tử vào đầu mảng array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng array mới |
array_reverse($$rray) | Đảo ngược vị trí các phần tử của mảng, phần tử cuối trở thành phần tử đầu tiên, phần tử kế cuối trở thành phần tử thứ nhì, … kết quả trả về là một mảng mới |
array_flip($$rray) | Trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với mảng $$rray (giá trị thành khóa và khóa thành giá trị) |
min($$rray) | Xác định phần tử nhỏ nhất trong mảng |
array_sum($$rray) | Tính tổng các phần tử trong mảng |
max($$rray) | Xác định phần tử lớn nhất trong mảng |
array_count_values(array) | Thống kê số lần xuất hiện của các phần tử trong mảng |
array_merge(array1,array1, array1,array2, …, $$rrayn) | Nhập 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới |
array_rand(array,array, array,number) | Lấy ngẫu nhiên number phần tử từ mảng array và đưa vào màng mới (lấy giá trị khóa) |
array_search(value,value, value,array) | Tìm phần tử mang giá trị value trong mảng array. Trả về khóa của phần tử tìm được. |
array_key_exists(key,key, key,array) | Kiểm tra khóa key có tồn tại trong mảng array hay không? Nếu có trả về giá trị true. |
in_array(value,value, value,array) | Kiểm tra giá trị value có tồn tại trong mảng array hay không? Nếu có trả về giá trị true. |
print_r ($$rray) | Xem cấu trúc của mảng |
count ($$rray) | Trả về giá trị kiểu số nguyên là số phần tử của mảng |
array_values ($$rray) | Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $$rray |
print_r ($$rray) | Xem cấu trúc của mảng |
count ($$rray) | Trả về giá trị kiểu số nguyên là số phần tử của mảng |
array_values ($$rray) | Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $$rray |
array_slice(array,array, array,begin. $$inish) | Trích lấy 1 đoạn phần tử của mảng array từ vị trí begin đến vị trí finish. Phần tư đầu tiên (chỉ số 0), phần tử cuối cùng (chỉ số -1 hay count(array) - 1) |
array_change_key_case($$rray, case) | Chuyển đồi các key trong mảng thành chữ hoa hoặc chữ thường |
implode (str,str, str,array) | Chuyển các giá trị của mảng array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tự str |
explode (delimiter,delimiter, delimiter,str) | Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $$elimiter, mỗi đoàn tách ra sẽ thành một phần tử của mảng mới |
current($$rray) | Truy xuất phần tử hiện tại của mảng |
end($$rray) | Truy xuất phần tử cuối cùng của mảng |
next($$rray) | Truy xuất phần tử sau phần tử hiện tại của mảng |
prev($$rray) | Truy xuất phần tử trước phần tử hiện tại của mảng |
reset() | Quay về vị trí phần tử đầu tiên trong mảng |
serialize($$alue) | Chuyển chuỗi/mảng/đối tượng $$alue thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu |
unserialize ($$alue) | Chuyển chuỗi đặc biệt được tạo từ serialize($$alue) về trạng thái ban đầu |
shuffle ($$rray) | Tạo ra mảng mới (mảng liên tục) với thứ tự các phần tử trong mảng bị thay đổi |
compact() | Tạo ra mảng mới từ các biến có sẵn |
range() | Sử dụng hàm range để tạo ra các phần tử của mảng |
array_combine(keys,keys, keys,values) | Tạo một mảng mới có khóa được lấy từ mảng keys và giá trị được lấy từ mảng values theo tuần tự (Yêu cầu số phần tử ở 2 mảng phải bằng nhau) |
array_diff(array1,array1, array1,array2) | Trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng array1 nhưng không tồn tại trong mảng array2 |
array_diff_key(array1,array1, array1,array2) | Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng array1 nhưng không tồn tại trong mảng array2 |
array_diff_assoc(array1,array1, array1,array2) | Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng array1 nhưng không tồn tại trong mảng array2 |
array_intersect(array1,array1, array1,array2) | Trả về một mảng bao gồm các phần tử giống nhau về giá trị giữa 2 mảng array1 và array2 |
array_intersect_key (array1,array1, array1,array2) | Trả về một mảng bao gồm các phần tử giống nhau về khóa giữa 2 mảng array1 và array2 |
array_intersect_assoc(array1,array1, array1,array2) | Trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng array1 và array2 |
array_walk() | Gửi các giá trị của mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới |
array_map () | Gửi các giá trị của một hay nhiều mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới |
array_slice(array, offset ,length,preserve) | Trích xuất lấy một đoạn phần tử của mảng tử từ vị trí bắt đầu offset (vị trí bắt đầu trong mảng là 0) và lấy length phần tử. |
array_splice(array1, offset ,length, array2) | Xóa bỏ một đoạn phần tử của mảng array1 tử từ vị trí bắt đầu và lấy length phần tử. Sau đó thay thế các phần tử bị loại bỏ bằng mảng array2 |
sort(array) | Sắp xếp các phần tử trong mảng array tăng dần theo giá trị |
rsort(array) | Sắp xếp các phần tử trong mảng array giảm dần theo giá trị |
krsort(array) | Sắp xếp các phần tử trong mảng array giảm dần theo khóa |
Thao tác với String
Khái niệm string được hiểu như thế nào?
- Khái niệm string được hiểu như là chuỗi, văn bản.
- Biến kiểu string được sử dụng để lưu trữ các giá trị có chứa ký tự. Các giá trị này luôn nằm trong cặp dấu nháy đôi hoặc dấu nháy đơn
các hàm xử lý chuỗi:
Hàm | Chức năng |
---|---|
strlen() | Lấy chiều dài của chuỗi (tổng số ký tự có trong chuỗi) |
mb_strlen() | Lấy chiều dài của chuỗi UTF-8 |
str_word_count() | Đếm số từ có trong chuỗi |
strtoupper($$tr) | Chuyển đổi chữ thường thành chữ HOA |
strtolower($$tr) | Chuyển đổi chữ HOA thành chữ thường |
ucfirst($$tr) | Chuyển đổi ký tự đầu tiên đầu tiên trong chuỗi thành chữ hoa |
lcfirst($$tr) | Chuyển đổi ký tự đầu tiên đầu tiên trong chuỗi thành chữ thường |
ucwords($$tr) | Chuyển đổi tất cả các ký tự đầu tiên của các từ trong một chuỗi thành chữ in hoa |
stripos() | Tìm kiếm chỉ số xuất hiện đầu tiên của một từ nào đó trong chuỗi |
strripos() | Tìm kiếm chỉ số xuất hiện cuối cùng của một từ nào đó trong chuỗi |
strrev() | Đảo ngược một chuỗi |
substr() | Trích xuất nội dung nào đó trong chuỗi |
ltrim(str,str, str,params) | Xóa các ký nằm bên trái của một chuỗi nào đó |
rtrim(str,str, str,params) | Xóa các ký nằm bên phải của một chuỗi nào đó |
trim(str,str, str,params) | Xóa các ký nằm bên phải và bên trái của một chuỗi nào đó |
implode (str,str, str,array) | Chuyển các giá trị của mảng array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tự str |
explode (delimiter,delimiter, delimiter,str) | Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $$elimiter, mỗi đoàn tách ra sẽ thành một phần tử của mảng mới |
str_repeat($$tr,n) | Lặp lại chuỗi $$tr với số lần lặp là n |
chr() | Trả về ký tự tương ứng với mã ASCII được truyền vào |
ord() | Trả về giá trị ASCII của ký tự đầu tiên trong chuỗi |
parse_str() | Chuyển các nội dung truy vấn vào các biến hoặc mảng |
parse_url() | Truy xuất các thành phần protocol, domain name, path, .. của một URL nào đó |
strcmp(str1,str1, str1,str2) | So sánh hai chuỗi str1 và str2 với nhau |
substr_compare (str1,str1, str1,str2, start,start, start,length) | Lấy length phần tử từ vị trí start trong chuỗi str1 say đó so sánh với chuỗi str2 |
str_pad(str,str, str,length, padString,padString, padString,padT ype) | Tăng độ dài của chuỗi str thành length với các ký tự mới được thêm vào là pad_string (với cơ chế thêm là padType) |
str_shuffle() | Sắp xếp ngẫu nhiên thứ tự các ký tự trong chuỗi |
str_replace(find,find, find,replace, $$tring) | Tìm kiếm và thay thế giá trị find trong chuỗi string bằng giá trị $$eplace |
substr_count(string,string, string,substring, start,start, start,length) | Lấy length phần tử từ vị trí start trong chuỗi str và thống kê số lần xuất hiện của substring trong chuỗi vừa lấy trên |
str_split(str,str, str,lenght) | Cắt chuỗi thành từng phần tử trong mảng, mỗi phần tử có độ dài là $$ength ký tự |
addslashes($$tr) | Thêm ký tự vào trước các ký tự: nháy đơn ('), nháy đôi ("), gạch chéo () và NULL |
addcslashes(str,str , str,character) | Thêm ký tự vào trước ký tự $$haracter |
stripslashes (str,str , str,character) | Hiển thị chuỗi không có các ký tự gạch chéo được tạo bởi hàm addslashes |
stripcslashes (str,str , str,character) | Hiển thị chuỗi không có các ký tự gạch chéo được tạo bởi hàm addcslashes |
htmlspecialchars ($$tr) | Chuyển đổi các ký tự được quy định trước & " ' < > sang giá trị HTML entities |
htmlspecialchars_decode ($$tr) | Chuyển đổi các giá trị HTML entities được gọi bởi hàm htmlspecialchars ($$tr) về giá trị ban đầu |
htmlentities($$tr) | Chuyển đổi các ký tự sang giá trị HTML entities |
html_entity_decode($$tr) | Chuyển đổi các giá trị HTML entities được gọi bởi hàm htmlentities($$tr) về giá trị ban đầu |
get_html_translation_table() | Xem danh sách các giá trị HTML entities |
strip_tags() | Loại bỏ các thẻ HTML |
Thao tác với Number
Number trong PHP được hiểu như thế nào?
• Khái niệm Number được hiểu như là số, số trong PHP chúng ta quan tâm 2 loại:
- sốnguyên
- số thập phân
các hàm xử lý số:
Hàm | Chức năng |
---|---|
is_numberic() | Kiểm tra biến có lưu giá trị kiểu Number hay không |
is_int | Kiểm tra biến có lưu giá trị kiểu Integer hay không |
is_float | Kiểm tra biến có lưu giá trị kiểu Float hay không |
range(start,start, start,length, $$oop) | Tạo ra một dãy số với số bắt đầu và số kết thúc được cho trước |
round() | Làm tròn đến số nguyên gần nhất |
ceil() | Làm tròn đến số nguyên gần nhất và lớn nhất |
floor() | Làm tròn đến số nguyên gần nhất và nhỏ nhất |
min() | Lấy giá trị nhỏ nhất trong các số được truyền vào |
max() | Lấy giá trị lớn nhất trong các số được truyền vào |
rand(min, max) | Lấy giá trị ngẫu nhiên được trả về nằm trong đoạn [min,max] |
number_format() | Định dạng cách hiển thị giữa các phần nghìn trong 1 số |
abs($$umber) | Trả vê giá trị tuyệt đối của một số nào đó |
pow(x, y) | Trả về kết quả là x mũ y |
sqrt($$umber) | Tính căn bậc hai của $$umber |
Thao tác với hàm Time
các hàm xử lý thời gian:
Hàm | Chức năng |
---|---|
getdate() | Lấy thời gian hiện tại được thiết lập ở máy chủ |
date_default_timezone_get() | Trả về kết quả múi giờ đã được thiết lập trước |
date_default_timezone_set | Thiết lập múi giờ |
time() | Trả về số giây từ thời điểm hiện tại so với 01/01/1970 |
mktime() | Trả về số giây tại một thời điểm nào đó so với 01/01/1970 |
date() | Định dạng cách hiển thị thời gian |
checkdate(month, day, year) | Kiểm tra ngày hợp lệ |
strtotime() | Chuyển đổi chuỗi thời gian (ở định dạng English) về giá trị timestamp |
date_parse_from_format(format,format, format,date) | Chuyển đổi chuỗi thời gian date về mảng thời gian theo định dạng format |
Tóm tắt:
Trên đây là các khái niệm về hàm, mảng, chuỗi, số, thời gian. Cũng như cách định nghĩa một hàm hay là các hàm đã được định nghĩa sẵn trong PHP. Bài này sẽ giúp các bạn sẽ hiểu rõ hơn về mảng, chuỗi, số, thời gian, cũng như các hàm tương tác với từng kiểu dữ liệu đó, hy vọng các bạn sẽ vận dụng thành công với từng mục đích của mình! ở các bài tiếp theo mình sẽ giới thiệu với các bạn về các đối tượng khác trong PHP như:
- Regex
- File
- Recursive
- File Upload
- Error & Exception
- Session & Cookie