Current Location: Home> Latest Articles> Use strnatcasecmp function to sort product lists in e-commerce websites

Use strnatcasecmp function to sort product lists in e-commerce websites

gitbox 2025-05-27

In e-commerce websites, sorting of product lists is usually a common requirement. Especially for product name sorting, we hope that the sorting method can comply with the natural sorting rules, which not only conforms to user habits, but also avoids the inconvenience caused by simple dictionary sorting. The strnatcasecmp function just helps us achieve this.

What is natural order sorting?

Natural Order Sort refers to comparing numbers in strings as numbers when sorting, rather than comparing them one by one as characters. For example, in normal string sorting, "item20" will be ahead of "item3" because the ASCII value of the character is compared. In natural order sorting, "item3" will be ahead of "item20" because we think the number 3 is smaller than the number 20.

PHP provides strnatcasecmp function to compare two strings in natural order, ignoring case differences. This function is a very suitable tool for implementing product name sorting in e-commerce websites.

Basic usage of strnatcasecmp function

The strnatcasecmp function is used to compare two strings in natural order, ignoring case. The prototype of the function is as follows:

 int strnatcasecmp(string $str1, string $str2)
  • $str1 and $str2 : Two strings to be compared.

  • Return value: If $str1 is less than $str2 , it returns a negative number; if $str1 is greater than $str2 , it returns a positive number; if two strings are equal, it returns 0.

Example

Here is a simple example of string comparison using the strnatcasecmp function:

 <?php
$str1 = "item20";
$str2 = "item3";

if (strnatcasecmp($str1, $str2) < 0) {
    echo "$str1 Ranked in $str2 Before。";
} elseif (strnatcasecmp($str1, $str2) > 0) {
    echo "$str1 Ranked in $str2 after。";
} else {
    echo "$str1 and $str2 same。";
}
?>

In this example, the output would be:

 item3 Ranked in item20 Before。

Use strnatcasecmp to sort product lists in e-commerce websites

Suppose we have a list of items, each item has a name, and those item names contain numbers. In order to provide users with more intuitive sorting results, we can use strnatcasecmp to sort products in natural order.

Product data example

Suppose our product data is stored in an array containing product names and prices:

 <?php
$products = [
    ["name" => "item10", "price" => 100],
    ["name" => "item2", "price" => 50],
    ["name" => "item20", "price" => 200],
    ["name" => "item3", "price" => 150],
];
?>

Sort using strnatcasecmp

We can use the usort function combined with strnatcasecmp to sort the product names in natural order:

 <?php
// Sort functions
function compareProducts($a, $b) {
    return strnatcasecmp($a['name'], $b['name']);
}

// Sort by natural order of product names
usort($products, 'compareProducts');

// Output the sorted product list
foreach ($products as $product) {
    echo "Product Name: " . $product['name'] . ",price: " . $product['price'] . "<br>";
}
?>

In the above code, the usort function sorts the products in the $products array according to the compareProducts function. The compareProducts function uses strnatcasecmp to compare the names of each product, ensuring that it is sorted in a natural order.

Output result

The output list of items will be sorted in natural order:

 Product Name: item2,price: 50
Product Name: item3,price: 150
Product Name: item10,price: 100
Product Name: item20,price: 200

In this way, the numbers contained in the product name are sorted by the size of the number, rather than by the ASCII value of the character.

Summarize

Using the strnatcasecmp function, we can implement natural order sorting in PHP, which is especially suitable for product list sorting in e-commerce websites. Through this sorting method, users can see the order of products more intuitively and improve user experience.

Hopefully this article can help you understand how to use the strnatcasecmp function to sort product lists in a natural order. If you have any other questions or need further assistance, please feel free to contact me!