Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP String strnatcmp() Function



The PHP String strnatcmp() function is used to compare two strings using a "natural order" technique and returns a positive, negative, or zero result. The function is case-sensitive.

In a natural algorithm, 2 is less than 10. In computer sorting, 10 is less than 2, because the initial digit of "10" is less than 2.

Syntax

Below is the syntax of the PHP String strnatcmp() function −

int strnatcmp ( string $string1, string $string2 )

Parameters

Here are the parameters of the strnatcmp() function −

  • $string1 − (Required) It specifies first string to search.

  • $string2 − (Required) It specifies second string to search.

Return Value

The strnatcmp() function returns -1 if string1 is less than string2, 1 if string1 is greater than string2, and 0 if they are equal.

PHP Version

First introduced in core PHP 4, the strnatcmp() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

First we will show you the basic example of the PHP String strnatcmp() function to simplify string comparisons with mixed numbers and text.

<?php
   echo strnatcmp("2aamna", "2amitprasad");
?>

Output

Here is the outcome of the following code −

-1

Example 2

In the below PHP code we will use the strnatcmp() function and do simple comparison of two strings to show natural ordering.

<?php
   // Define two strings
   $string1 = "file1";
   $string2 = "file2";

   // Compare the strings using natural order
   $result = strnatcmp($string1, $string2);

   // Output the result
   if ($result < 0) {
      echo "$string1 is less than $string2\n";
   } elseif ($result > 0) {
      echo "$string1 is greater than $string2\n";
   } else {
      echo "$string1 is equal to $string2\n";
   }
?> 

Output

This will generate the below output −

file1 is less than file2

Example 3

Now the below code demonstrates the use of strnatcmp() function to show how case sensitivity changes the comparison.

<?php
   // Define two strings with different cases
   $string1 = "File10";
   $string2 = "file2";

   // Compare the strings
   $result = strnatcmp($string1, $string2);

   // Output the result
   if ($result < 0) {
      echo "$string1 is less than $string2\n";
   } elseif ($result > 0) {
      echo "$string1 is greater than $string2\n";
   } else {
      echo "$string1 is equal to $string2\n";
   }
?> 

Output

This will create the below output −

File10 is less than file2

Example 4

In the following example, we are sorting an array of strings naturally using usort and strnatcmp() function.

<?php
   // Define an array of strings
   $files = ["file20", "file3", "file1", "file10"];

   // Sort the array using strnatcmp
   usort($files, "strnatcmp");

   // Output the sorted array
   echo "Sorted array:\n";
   print_r($files);
?> 

Output

Following is the output of the above code −

Sorted array:
Array
(
   [0] => file1
   [1] => file3
   [2] => file10
   [3] => file20
)
php_function_reference.htm
Advertisements