> 백엔드 개발 > PHP 튜토리얼 > 如何用PHP4进行自然排序_PHP教程

如何用PHP4进行自然排序_PHP教程

WBOY
풀어 주다: 2016-07-13 17:24:52
원래의
993명이 탐색했습니다.

对于这样几个字串:

inf1
inf3
inf12

如果我们只是用strcmp()函数来做比较,得出的次序如下:

inf1
inf12
inf3

可这显然不是我们想要的结果,一般我们的解决方法是采用在数字前加一个0,如 inf01 inf03 inf12 这样。可不可以不用加这个0也能按自然次序(nature order)排出我们想要的真正的顺序呢?

在PHP4中提供了这样两个函数可以做到这一点:

int strnatcasecmp (string str1, string str2)
int strnatcmp(string str1, string str2)

它们支持的版本是:PHP4 >= 4.0RC2

说明如下:

按自然次序(nature order)对 str1 str2 进行排序。
返回值 返回值 =0 表示 str1 等于 str2,
返回值 >0 表示 str1 大于 str2。

例子如下:


$str=array("a","a0","a3","a2","a10","a18","a24");

$k=count($str);
echo "total=".$k."
";

echo "
用strnatcmp排序
";
for($i=1;$iif(strnatcmp($str[$i-1],$str[$i])>0){
$tmp=$str[$i-1];
$str[$i-1]=$str[$i];
$str[$i]=$tmp;
}
}

print_r($str);
echo "
用strcmp排序
";


for($i=1;$iif(strcmp($str[$i-1],$str[$i])>0){
$tmp=$str[$i-1];
$str[$i-1]=$str[$i];
$str[$i]=$tmp;
}
}

print_r($str);

echo "
用sort排序
";
sort($str);
print_r($str);
?>

输出如下:


total=7


用strnatcmp排序
Array ( [0] => a [1] => a0 [2] => a2 [3] => a3 [4] => a10 [5] => a18 [6] => a24 )
用strcmp排序
Array ( [0] => a [1] => a0 [2] => a2 [3] => a10 [4] => a18 [5] => a24 [6] => a3 )
用sort排序
Array ( [0] => a [1] => a0 [2] => a10 [3] => a18 [4] => a2 [5] => a24 [6] => a3 )


明白了吗?

其实这个函数也支持比较复杂一点的功能。如:

a
x2-g8
1.001
试一下吧,真得很有用。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/532095.htmlTechArticle对于这样几个字串: inf1 inf3 inf12 如果我们只是用strcmp()函数来做比较,得出的次序如下: inf1 inf12 inf3 可这显然不是我们想要的结果,一般...
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿