Hàm strcoll() PHP sử dụng như thế nào ?

Hàm strcoll() là một trong những hàm chuỗi được tích hợp sẵn trong PHP, được sử dụng để so sánh hai chuỗi. So sánh này dựa trên ngôn ngữ địa phương và không an toàn như hàm strcmp().

Lưu ý rằng so sánh được thực hiện bởi hàm strcoll() là phân biệt chữ hoa – chữ thường, điều này có nghĩa là nó xử lý các ký tự chữ hoa và chữ thường khác nhau trong quá trình so sánh. Tuy nhiên, hàm strcoll() không an toàn như hàm strcmp().

Khi sử dụng hàm strcoll(), nó sẽ tính toán giá trị ASCII của chuỗi và sau đó so sánh hai chuỗi để kiểm tra chúng có bằng, lớn hơn hay nhỏ hơn nhau.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Hàm strcoll() PHP Là gì

Hàm strcoll() PHP được sử dụng để so sánh hai chuỗi dựa trên ngôn ngữ địa phương. Nó trả về một giá trị số nguyên ngẫu nhiên tùy thuộc vào điều kiện phù hợp. Khi hai chuỗi bằng nhau, hàm sẽ trả về 0. Khi chuỗi thứ nhất nhỏ hơn chuỗi thứ hai, hàm sẽ trả về giá trị âm (< 0). Khi chuỗi thứ nhất lớn hơn chuỗi thứ hai, hàm sẽ trả về giá trị dương (> 0).

Cú pháp

Hàm strcoll() PHP có cú pháp như sau:

strcoll($str1, $str2)

Trong đó:

  • $str1 (bắt buộc) – Đây là tham số đầu tiên của hàm và được sử dụng trong quá trình so sánh.
  • $str2 (bắt buộc) – Đây là tham số thứ hai của hàm và được sử dụng trong quá trình so sánh.

Cả hai tham số đều là bắt buộc để truyền vào hàm.

Thông số

Hàm strcoll() PHP có hai tham số bắt buộc: $str1 và $str2.

Giá trị trả về bởi strcoll()

Giá trị trả về của hàm strcoll() là một số nguyên ngẫu nhiên, tùy thuộc vào trường hợp so sánh. Khi hai chuỗi bằng nhau, hàm sẽ trả về 0. Khi chuỗi thứ nhất nhỏ hơn chuỗi thứ hai, hàm sẽ trả về giá trị âm (< 0). Khi chuỗi thứ nhất lớn hơn chuỗi thứ hai, hàm sẽ trả về giá trị dương (> 0).

Lưu ý rằng hàm strcoll() là phân biệt chữ hoa – chữ thường và không an toàn như hàm strcmp().

Ví dụ 1

$str1 = "Hello";
$str2 = "Hello";
echo strcoll($str1, $str2); // Output: 0

Vì hai chuỗi đều bằng nhau nên giá trị trả về là 0.

Ví dụ 2

$str1 = "Hello";
$str2 = "hello";
echo strcoll($str1, $str2); // Output: 1

Vì ký tự đầu tiên của chuỗi thứ nhất là chữ in hoa và có giá tr á trị ASCII nhỏ hơn ký tự đầu tiên của chuỗi thứ hai (chữ in thường), nên giá trị trả về là 1.

Ví dụ 3

$str1 = "hello";
$str2 = "Hello";
echo strcoll($str1, $str2); // Output: -1

Vì ký tự đầu tiên của chuỗi thứ nhất là chữ in thường và có giá trị ASCII lớn hơn ký tự đầu tiên của chuỗi thứ hai (chữ in hoa), nên giá trị trả về là -1.

Cách triển khai hàm strcoll() PHP

Hàm strcoll() PHP được sử dụng để so sánh hai chuỗi. Hàm này trả về một giá trị âm nếu chuỗi đầu tiên nhỏ hơn chuỗi thứ hai, một giá trị dương nếu chuỗi đầu tiên lớn hơn chuỗi thứ hai và 0 nếu hai chuỗi bằng nhau.

Hàm strcoll() khác với hàm strcmp() ở chỗ hàm strcoll() phân biệt chữ hoa chữ thường và sử dụng bảng so sánh của locale hiện tại để so sánh các chuỗi.

Hàm strcoll() có hai đối số:

  • string1: Chuỗi đầu tiên để so sánh.
  • string2: Chuỗi thứ hai để so sánh.

Ví dụ:

$string1 = "Hello";
$string2 = "World";

// So sánh hai chuỗi
$result = strcoll($string1, $string2);

// In ra kết quả
echo $result;

Kết quả của đoạn code trên sẽ là:

-1

Điều này có nghĩa là chuỗi string1 nhỏ hơn chuỗi string2.

Hàm strcoll() là một hàm binary-safe, nghĩa là nó có thể so sánh hai chuỗi bất kể chúng được lưu trữ theo cách nào.

Dưới đây là một số ví dụ về cách triển khai hàm strcoll():

// So sánh hai chuỗi bằng nhau
strcoll("Hello", "Hello"); // 0

// So sánh hai chuỗi khác nhau
strcoll("Hello", "World"); // -1

// So sánh hai chuỗi bằng nhau, nhưng locale hiện tại là en_US
setlocale(LC_COLLATE, "en_US");
strcoll("Hello", "World"); // 0

// So sánh hai chuỗi bằng nhau, nhưng locale hiện tại là vi_VN
setlocale(LC_COLLATE, "vi_VN");
strcoll("Hello", "World"); // 1

Để so sánh hai chuỗi không phân biệt chữ hoa chữ thường, bạn có thể sử dụng hàm strcasecmp().

Hướng dẫn sử dụng hàm strcoll() PHP

Để sử dụng hàm strcoll() PHP, bạn cần truyền vào hai chuỗi được so sánh. Sau đó, kiểm tra giá trị trả về để biết xem hai chuỗi bằng nhau, chuỗi thứ nhất lớn hơn hay chuỗi thứ nhất nhỏ hơn.

Ưu và Nhược điểm của hàm strcoll() PHP

Ưu điểm:

  • Hàm strcoll() PHP cho phép bạn so sánh hai chuỗi dựa trên ngôn ngữ địa phương.
  • Hàm trả về một giá trị số nguyên tùy thuộc vào trường hợp so sánh.

Nhược điểm:

  • So sánh được thực hiện bởi hàm strcoll() là phân biệt chữ hoa – chữ thường, điều này có nghĩa là nó xử lý các ký tự chữ hoa và chữ thường khác nhau trong quá trình so sánh. Tuy nhiên, hàm strcoll() không an toàn như hàm strcmp().
  • Hàm strcoll() không phải là một hàm an toàn khi so sánh các chuỗi chứa các ký tự đặc biệt.

Lời khuyên khi sử dụng hàm strcoll() PHP

Khi sử dụng hàm strcoll() PHP, bạn cần lưu ý rằng so sánh được thực hiện bởi hàm strcoll() là phân biệt chữ hoa – chữ thường và không an toàn như hàm strcmp(). Nếu bạn muốn so sánh hai chuỗi mà không phân biệt chữ hoa – chữ thường, bạn có thể sử dụng hàm strcmp() thay vì hàm strcoll().

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về hàm strcoll() PHP. Hàm này được sử dụng để so sánh hai chuỗi dựa trên ngôn ngữ địa phương. Lưu ý rằng so sánh bởi hàm strcoll() là phân biệt chữ hoa – chữ thường và không an toàn như hàm strcmp(). Nếu bạn muốn so sánh hai chuỗi mà không phân biệt chữ hoa – chữ thường, bạn có thể sử dụng hàm strcmp() thay vì hàm strcoll(). 

Hàm strcoll() PHP dùng để làm gì?

Hàm strcoll() PHP được sử dụng để so sánh hai chuỗi và trả về một giá trị số nguyên tùy thuộc vào trường hợp so sánh.

Hàm strcoll() trong PHP phân biệt chữ hoa – chữ thường hay không?

Có, hàm strcoll() trong PHP phân biệt chữ hoa – chữ thường.

Hàm strcoll() PHP an toàn khi so sánh các chuỗi chứa các ký tự đặc biệt hay không?

Không, hàm strcoll() trong PHP không an toàn khi so sánh các chuỗi chứa các ký tự đặc biệt.

Tại sao nên sử dụng hàm strcoll() thay vì hàm strcmp() trong PHP? 

Nếu bạn muốn so sánh hai chuỗi dựa trên ngôn ngữ địa phương, bạn nên sử dụng hàm strcoll() thay vì hàm strcmp().

Hàm strcoll() trong PHP có ưu điểm gì? 

Hàm strcoll() PHP cho phép bạn so sánh hai chuỗi dựa trên ngôn ngữ địa phương và hàm trả về một giá trị số nguyên tùy thuộc vào trường hợp so sánh.