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 )