Chuong XXXVII : Xâu – Các phép toán thường gặp (tiếp)

Xâu – Các phép toán thường gặp (tiếp)

Các hàm làm việc với xâu (string)

So sánh 2 xâu

Để so sánh 2 xâu với nhau, ta sử dụng strcmpstrncmp

PHP Code:

strcmp($xâu_1, $xâu_2);
strncmp($xâu_1, $xâu_2, $n);

Hàm strcmp sẽ chuyển từng kí tự trong 2 xâu về dạng mã byte của mỗi kí tự để so sánh, nó sẽ trả về 1 trong 3 giá trị:

  1. (-1) nếu $xâu_1 “bé hơn” $xâu_2
  2. 0 nếu 2 xâu “bằng nhau”
  3. 1 nếu $xâu_1 “lớn hơn” $xâu_2

Hàm strncmp cũng hoạt động tương tự, nhưng nó sẽ không kiểm tra hết cả 2 xâu mà chỉ kiểm tra $n kí tự đầu tiên mà thôi
Để dễ hiểu hơn, ta có ví dụ sau đây:

PHP Code:

<?php
$strA = ‘Update softs’;
$strB = ‘update softs’;
$strC = ‘tpdate softs’;
$strD = ”;
$strE = ”;
$strF = ‘Update life’;

//So sánh A và B: mã của “U” < mã của “u” ~> đự doán là $resultAB = -1
$resultAB = strcmp($strA, $strB);
//So sánh B và C: mã của “u” > mã của “t” ~> dự đoán là $resultBC = 1
$resultBC = strcmp($strB, $strC);
//So sánh D và E: 2 thằng cùng không có gì ~> dự đoán là $resultDE = 0
$resultDE = strcmp($strD, $strE);
//So sánh A và F (6 kí tự đầu tiên): 6 kí tự đầu tiên giống nhau ~> dự đoán là $resultAF = 0
$resultAF = strncmp($strA, $strF, 6);

//In ra kết quả
echo “\$resultAB = $resultAB<br/>\$resultBC = $resultBC<br/>\$resultDE = $resultDE<br/>\$resultAF = $resultAF”;
?>

Cho chạy đoạn mã trên bạn sẽ thu được:

Quote:

$resultAB = -1
$resultBC = 1
$resultDE = 0
$resultAF = 0

Vậy là đúng rồi nhỉ?

Ngoài 2 hàm strcmpstrncmp còn có 1 vài hàm khác cũng dùng để so sánh 2 xâu với nhau tuy nhiên mỗi hàm lại khác nhau 1 tí tẹo:

  1. strcasecmpstrncasecmp: 2 bạn này chỉ khác ở 1 điểm, đó là nó sẽ không phân biệt hoa thường ~> nếu trong ví dụ so sánh $strA và $strB mà dùng strcasecmp thì sẽ nhận đc kết là 0
  2. strnatcmpstrnatcasecmp: 2 anh bạn này thì khá hay đấy. Giả sử bạn có 2 xâu là “filename10” và “filename9”.
    Nếu dùng strcmp thì do mã của “1” nhỏ hơn “9” nên hiển nhiên kết quả sẽ là “filename10” nhỏ hơn “filename9”! Bạn sẽ lẩm bẩm: “Làm việc như máy (!?)”. Nhưng không sao, chúng ta đã có 2 hàm strnatcmpstrnatcasecmp có khả năng làm việc như strcmpstrcasecmp cộng thêm khả năng xử lý số đặc biệt.
    Với strnatcmp thì “filename10” sẽ lớn hơn “filename9”, với strncasecmp thì “Filename10” sẽ lớn hơn “fileNAME9”

Đơn giản vậy thôi

Chữ HOA và chữ thường

Khi làm việc, đôi lúc bạn không muốn để ý đến chữ HOA và chữ thường, cách đơn giản nhất là sử dụng 2 hàm chuyển đổi sau:

PHP Code:

strtoupper($xâu);
strtolower($xâu);

Hàm strtoupper khi chạy sẽ trả về $xâu với tất cả các kí tự đều là kí tự HOA, hàm strtolower thì ngược lại, sẽ trả về $xâu với tất cả các kí tự đều là kí tự thường
Xét ví dụ sau đây:

PHP Code:

<?php
$str = “UpDAteSoftS”;
echo strtoupper($str);
echo “<br/>”;
echo strtolower($str);
?>

Kết quả thu đc sẽ là:

Quote:

UPDATESOFTS
updatesofts

*Note:
Để nối 2 xâu lại với nhau ta dùng toán tử .
Trong ví dụ cuối cùng có thể viết gọn lại là:

PHP Code:

<?php
$str = “UpDAteSoftS”;
echo strtoupper($str).”<br/>”.strtolower($str);
?>

Kết quả thu được vẫn sẽ như vậy

 

Mr.paint(UDS)

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: