strnatcmp
تابع strnatcmp برای مرتب سازی طبیعی رشته هاست. مرتب سازی طبیعی یعنی اعداد مثل ذهن انسان سنجیده می شوند. مثلا 2 قبل از 10 می آید. این تابع به بزرگی حروف حساس است.
مرتب سازی طبیعی چیست؟
در مرتب سازی طبیعی (Natural Order)، بخش های عددی جدا دیده می شوند. بنابراین "pic2" جلوتر از "pic10" قرار می گیرد. این رفتار برای نام فایل ها عالی است.
سینتکس
فرم کلی: strnatcmp(string1, string2). خروجی می تواند منفی، صفر، یا مثبت باشد.
مثال 1: مقایسه دو رشته با مرتب سازی طبیعی
<?php
echo strnatcmp("2Hello world!", "10Hello world!");
echo "<br>";
echo strnatcmp("10Hello world!", "2Hello world!");
?>
مثال 2: تفاوت با مقایسه معمولی
<?php
$arr1 = $arr2 = array("pic1", "pic2", "pic10", "pic01", "pic100", "pic20", "pic30", "pic200");
echo "Standard string comparison" . "<br>";
usort($arr1, "strcmp");
print_r($arr1);
echo "<br>";
echo "Natural order string comparison" . "<br>";
usort($arr2, "strnatcmp");
print_r($arr2);
?>
نکته ها
نکته: اگر حساس نبودن به حروف می خواهی، از strnatcasecmp استفاده کن.
نکته: برای مقایسه ساده، راهنمای strcmp را ببین.
گام های عملی سریع
- رشته های هدف را آماده کن.
- تابع
strnatcmp(a, b)را صدا بزن. - صفر یعنی برابر هستند.
- منفی یعنی a قبل از b است.
- مثبت یعنی a بعد از b است.
جمع بندی سریع
- مرتب سازی طبیعی اعداد را منطقی می چیند.
- به بزرگی حروف حساس است.
- برای نام فایل ها بسیار مناسب است.
- نتیجه منفی، صفر، یا مثبت برمی گردد.