24/05/2018, 23:46

Xử lý chuỗi, mảng và các hàm ngày tháng trong PHP

Bài học này chúng ta sẽ làm quen cách xử lý chuỗi, mảng, kiểu DataTime trong PHP: Xử lý chuỗi Làm việc với mảng dữ liệu Kiểu DateTime PHP là kịch bản được xem là tốt nhất cho xử lý chuỗi, bằng cách sử dụng các hàm xử lý chuỗi, ...

Bài học này chúng ta sẽ làm quen cách xử lý chuỗi, mảng, kiểu DataTime trong PHP:

  • Xử lý chuỗi
  • Làm việc với mảng dữ liệu
  • Kiểu DateTime

PHP là kịch bản được xem là tốt nhất cho xử lý chuỗi, bằng cách sử dụng các hàm xử lý chuỗi, bạn có thể thực hiện các ý định của mình khi tương tác cơ sở dữ liệu, tập tin hay dữ liệu khác.

Định dạng chuỗi

Khi xuất kết quả ra trình duyệt, bạn có thể sử dụng các định dạng chuỗi tương tự như ngôn ngữ lập trình C. Chẳng hạn, chúng ta in giá trị của biến $i trong trang dinhdang.php như ví dụ 1

Trang dinhdang.php
  <html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Dinh dang</h4>
<?php
$i=12.55;
$j=100;
echo "Total amount of order:  $i<br>";
printf("Total amount of order: %.1f", $i);
echo "<br>";
printf("Total amount of order: %.2f", $i);
echo "<br>";
printf("Total amount of order: i=%.2f, j=%.0f", $i,$j);
?>
</body>
</html>

Kết quả xuất hiện như hình 1

Định nghĩa chuỗi in

Trong đó các định dạng được chia ra nhiêu loại tuỳ thụôc vào các ký tự bạn sử dụng.

% - Không yêu cầu tham số.

b – Trình bày dạng số integer và hiện thực dưới dạng binary.

c - Trình bày dạng số integer và hiện thực dưới dạng mã ASCII.

d - Trình bày dạng số integer và hiện thực dưới dạng decimal.

e - Trình bày dạng số logic và hiện thực dưới dạng 1.2e+2.

u - Trình bày dạng số integer và hiện thực dưới dạng decimal không dấu.

f - Trình bày dạng số float và hiện thực dưới dạng số chấm động.

o - Trình bày dạng số integer và hiện thực dưới dạng hệ số 10.

s - Trình bày dạng chuỗi.

x - Trình bày dạng số integer và hiện thực dưới dạng hệ số 16 với ký tự thường.

X - Trình bày dạng số integer và hiện thực dưới dạng hệ số 16 với ký tự hoa.

Hàm chuyển đổi chuỗi

Để chuyển đổi chuỗi ra ký tự hoa thường bạn sử dụng một trong 4 hàm như ví dụ 2 trong trang chuyendoi.php:

Trang chuyendoi.php
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Chuyen doi</h4>
<?php
$str="Welcome to huukhang.com";
echo $str;
echo "<br>";
echo strtoupper($str);
echo "<br>";
echo strtolower($str);
echo "<br>";
echo ucfirst($str);
echo "<br>";
echo ucwords($str);
echo "<br>";
?>
</body>
</html>


Kết quả trình bày như hình 2

Chuyển đổi chuỗi

Hàm tách hay kết hợp chuỗi

Để tách hay kết hợp chuỗi, bạn sử dụng một trong các hàm thường sử dụng như strtok, explode hay substr. Chẳng hạn, chúng ta sử dụng 4 hàm này trong ví dụ 3 trong trang tachchuoi.php

Trang tachchuoi.php
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Tach hop chuoi</h4>
<?php
$string = "Xin chao ban da den voi huukhang.com";
$str = $string;
echo $string."<br>";
$tok = strtok($string, " ");
while ($tok)
{
echo "Word= $tok<br />";
$tok = strtok(" 
	");
}
echo $str."<br>";
echo substr($str,24)."<br>";
$a[]=array();
$a=explode(" ",$str);
while($i=each($a))
{
echo $i["value"]."<br>";
}
?>
</body>
</html>

Kết quả trình bày như hình 3.

Trong trường hợp kết hợp giá trị của các phần tử của mảng thành chuỗi, bạn sử dụng hàm implode như ví dụ 4 trong trang kethop.php:

Trang kethop.php
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Ket hop chuoi</h4>
<?php
$str = "Xin chao ban da den voi huukhang.com";
$a[]=array();
$a=explode(" ",$str);
while($i=each($a))
{
echo $i["value"]."<br>";
}
$str=implode(" ",$a);
echo $str;
?>
</body>
</html>

Kết quả trình bày như hình 4.

Tìm kiếm và thay thế chuỗi

Để thay thế chuỗi, bạn sử dụng hàm str_replace, chẳng hạn trong trường hợp hợp bạn lấy giá trị từ thẻ nhập liệu, sau đó tìm kiếm nếu phát hiện dấu ‘ thì thay thế thành hai dấu nháy như trang replace.php.

Trang replace.php
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>That the chuoi</h4>
<?php
$str="";
if (isset($txtfullname))
$str = $txtfullname;
if($str != "");
$str=str_replace("o","a",$str);
echo $str."<br>";
?>
<form action=replace.php method=post>
fullname: <input name=txtfullname value="<?=$str?>"><br>
<input type=submit value=Submit>
</form>
</body>
</html>

Khi triệu gọi trang replace.php trên trình duyệt, bạn sẽ có kết quả như sau:

Như trong bài kiểu dữ liệu chúng ta đã làm quen với kiểu dữ liệu mảng, trong phần này chúng ta tiếp tục tìm hiểu các khai báo, truy cập và tương tác với tập tin từ mảng một chiều, hai chiều.

Mảng một chiều

Để khai báo mảng một chiều, bạn có thể sử dụng cú pháp như sau:

$arr=array();
$arrs=array(5);

Truy cập vào phần tử mảng, bạn có thể sử dụng chỉ mục của phần tử như sau:


$arr[0]=1;
$arrs[1]=12;

Lấy giá trị của phần tử mảng, bạn cũng thực hiện tương tự như trường hợp truy cập mảng phần tử.


echo $arr[0];
$x=$arrs[5];

Chẳng hạn, chúng ta khai báo mảng động và mảng có số phần tử cho trước, sau đó truy cập và lấy giá trị của chúng như ví dụ trong trang arrayone.php sau:

Trang arrayone.php

<html>
<head>
<title>Array</title>
</head>
<body>
<h4>Mang mot chieu</h4>
<?php
$i=0;
$myarr=array(1,2,3,4,5,6,7);
$arr=array();
$arrs=array(10);
$arr[0]=10;$arr[1]=11;$arr[2]=12;$arr[3]=13;
for($i=0;$i<sizeof($arr);$i++)
{
echo $arr[$i]." ";
}
echo "<br>";
echo "Gia tri lon nhat ".max($arr)."<br>";
echo "Gia tri nho nhat ".min($arr)."<br>" ;
echo "Gia tri trung binh ".array_sum($arr) / sizeof($arr)."<br>" ;
echo "<br>";
for($i=0;$i<=10;$i++)
{
$arrs[$i]=10+$i;
}
for($i=0;$i<=10;$i++)
{
echo $arrs[$i]." ";
}
echo "<br>";
echo "Gia tri lon nhat ".max($arrs)."<br>";
echo "Gia tri nho nhat ".min($arrs)."<br>" ;
echo "Gia tri trung binh ".array_sum($arrs) / sizeof($arrs)."<br>" ;
?>
</body>
</html>

Kết quả trình bày như hình 6 khi triệu gọi trang arrayone.php.

Khai báo và sử dụng mảng một chiều

Mảng hai chiều

Tương tự như mảng một chiều, trong trường hợp làm việc mảng hai chiều bạn khai báo tương tự như trang arraytwo.php.

Trang arraytwo.php
<html>
<head>
<title>Array</title>
</head>
<body>
<h4>Mang hai chieu</h4>
<?php
$i=0;$j=0;
$arr=array();
$arr[0][0]=10;
$arr[0][1]=11;
$arr[0][2]=12;
$arr[1][0]=13;
$arr[1][1]=14;
$arr[1][2]=15;
$arr[2][0]=16;
$arr[2][1]=17;
$arr[2][2]=18;
for($i=0;$i<sizeof($arr);$i++)
{
for($j=0;$j<sizeof($arr);$j++)
{
echo $arr[$i][$j]." ";
}
echo "<br>";
}
echo "<br>";

$arrs=array(array(1,2,3,4,5,6,7), array(11,12,13,14,15,16,17));
 


for($i=0;$i<=7;$i++)
{
for($j=0;$j<=7;$j++)
{
$arrs[$i][$j]=10+$i*$j;
}
}

for($i=0;$i<=7;$i++)
{
for($j=0;$j<=7;$j++)
{
echo $arrs[$i][$j]." ";
}
echo "<br>";
}
echo "<br>";

?>
</body>
</html>

Khi triệu gọi trang này trên trình duyệt, kết quả trình bày như hình 7.

Mảng hai chiều

Để làm việc với kiểu dữ liệu Date và Time, bạn sử dụng hàm của PHP có sẵn. Chẳng hạn, muốn trình bày chuỗi ngày tháng, bạn dùng hàm date với các tham số như ví dụ sau:

<html>
<head>
<title>Date and Time</title>
</head>
<body>
<h4>Ngay hien tai</h4>
<?php
echo date("j-S-F-Y");
echo "<br>";
echo date("M/Y");
echo "<br>";
echo "Days of ".date("M")." is ".date("t");
echo "<br>";
?>
</body>
</html>
  

Kết quả trả về như hình 8

Sử dụng hàm Date

Dưới đây trình bày bảng các tham số của hàm Date

Bảng các tham số của hàm date
Code Diễn giải
a Buổi sáng/Chiều bằng hai ký tự thường am/pm.
A Buổi sáng/Chiều bằng hai ký tự hoa AM/PM.
B Định dạng thời gian Swatch Internet, bạn có thể tham khảo http://swatch.com/internettime/internettime.php3.
d Day (01-31) trong tháng với hai số, nếu ngày 1-9 sẽ có kèm số 0.
D Day (Mon-Sun) trong tuần với 3 ký tự.
F Tháng (January-December) trong năm với tên tháng đầy đủ dạng text.
g Hour (1-12) trong ngày 1 hoặc 2 số (không kèm 0 nếu giờ từ 1-9).
G Hour (0-23) trong ngày 1 hoặc 2 số (không kèm 0 nếu giờ từ 0-9).
h Hour (01-12) trong ngày 2 số (kèm 0 nếu giờ từ 01-09).
H Hour (00-23) trong ngày 2 số (kèm 00 nếu giờ từ 00-09).
i Minutes (01-59) đã trôi qua (kèm 00 nếu phút từ 00-59).
j Day (1-31) 1 hoặc 2 số (không kèm 0 nếu ngày từ 1-9).
l Day (Monday-Sunday) trong tuần dạng text.
L Năm nhuần trả về 1, ngược lại hàm trả về 0.
m Month (01-12) trong năm 2 số (kèm 00 nếu tháng từ 01-09).
M Month (Jan-Dec) trong năm 3 ký tự.
n Month (1-12) 1 hoặc 2 số (không kèm 0 nếu tháng từ 1-9).
s Seconds (01-59) đã trôi qua (kèm 00 nếu giây từ 00-59).
S Thêm hai ký tự st, nd, rd hay th theo sau ngày dạng hai ký tự số (ví dụ như 12th).
t Trả về tổng số ngày trong tháng (từ 28 -31).
T Ký tự Timezone của server với 3 ký tự, chẳng hạn như EST.
U Tổng số Seconds tứ 1 January 1970 tới hôm nay ứng với UNIX Time Stamp.
w Day (0-6) của tuần, 0 ứng với Sunday và 6 ứng với Saturday.
y Năm định dạng 2 con số (03).
Y Năm định dạng 4 con số (2003).
z Ngày trong năm một hoặc 2 con số (0-365).
X Timezone hiện tại tính bằng giây từ –43200 đến 43200.

Trong bài này, chúng ta tập trung tìm hiểu xử lý chuỗi, mảng và hàm ngày tháng. Trong bài tiếp, chúng ta tiếp tục tìm hiểu cơ sở dữ liệu mySQL.

0