note 55591 added to function.usort
| From: | reinhard at ess dot co dot at | Date: | Mon, 08 Aug 2005 13:34:42 +0000 |
| Subject: | note 55591 added to function.usort | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-93246@lists.php.net to get a copy of this message | ||
maybe someone can use this.
with that compare-function you can get this order:
string1, string2, ..., string10, string11, ...string22...
else the functions make something like
string10,string11,...string1,string20....
or
string1,string10,string11,string2,string20...
it's not the best solution, but works for my purpose...
<?
function cmp($a,$b){
list($a)=explode(".",$a);
list($b)=explode(".",$b);
$s=0;
for($i=0;$i<=strlen($a);++$i){
if(is_numeric($a[$i])&&is_numeric($b[$i])){
$n=1;
$anum=$bnum=0;
while((is_numeric($a[$i])||is_numeric($b[$i]))&&
(strlen($a)>=$i||strlen($b)>=$i)){
if(is_numeric($a[$i])&&$i<=strlen($a)) $anum=$a[$i]+$anum*$n;
if(is_numeric($b[$i])&&$i<=strlen($b)) $bnum=$b[$i]+$bnum*$n;
$n*=10;
++$i;
}
if($n>1) --$i;
if($anum!=$bnum) return $anum<$bnum?-1:1;
}elseif($a[$i]!=$b[$i]) return $a[$i]<$b[$i]?-1:1;
}
}
?>
use it like this:
<?
usort($array,"cmp");
?>
----
Manual Page -- http://www.php.net/manual/en/function.usort.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+55591
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+55591&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+55591&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+55591&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+55591&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+55591&report=yes&reason=non-english
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+55591&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+55591&report=yes
Search -- http://master.php.net/manage/user-notes.php