note 66219 modified in function.usort by thiago
| From: | thiago@php.net | Date: | Tue, 22 Jul 2008 19:12:39 +0000 |
| Subject: | note 66219 modified in function.usort by thiago | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-142561@lists.php.net to get a copy of this message | ||
<?php
function arfsort($a,$fl){
$GLOBALS['__ARFSORT_LIST__'] = $fl;
usort($a,'arfsort_func');
return $a;
}
function arfsort_func($a,$b) {
foreach ($GLOBALS['__ARFSORT_LIST__'] as $f) {
switch ($f[1]) { // switch on ascending or descending value
case "d":
## Add number type sort
if (is_numeric($a[$f[0]])) {
if ($b[$f[0]] < $a[$f[0]]) $strc = -1;
else if ($b[$f[0]] > $a[$f[0]]) $strc = 1;
else $strc = 0;
} else {
$strc = strcmp($b[$f[0]],$a[$f[0]]);
}
if ( $strc != 0 ){
return $strc;
}
break;
default:
if (is_numeric($a[$f[0]])) {
if ($b[$f[0]] > $a[$f[0]]) $strc = -1;
else if ($b[$f[0]] < $a[$f[0]]) $strc = 1;
else $strc = 0;
} else {
$strc = strcmp($a[$f[0]],$b[$f[0]]);
}
if ($strc != 0){
return $strc;
}
break;
}
}
return 0;
}
?>
--was--
function arfsort($a,$fl){
$GLOBALS['__ARFSORT_LIST__'] = $fl;
usort($a,'arfsort_func');
return $a;
}
function arfsort_func($a,$b) {
foreach ($GLOBALS['__ARFSORT_LIST__'] as $f) {
switch ($f[1]) { // switch on ascending or descending value
case "d":
## Add number type sort
if (is_numeric($a[$f[0]])) {
if ($b[$f[0]] < $a[$f[0]]) $strc = -1;
else if ($b[$f[0]] > $a[$f[0]]) $strc = 1;
else $strc = 0;
} else {
$strc = strcmp($b[$f[0]],$a[$f[0]]);
}
if ( $strc != 0 ){
return $strc;
}
break;
default:
if (is_numeric($a[$f[0]])) {
if ($b[$f[0]] > $a[$f[0]]) $strc = -1;
else if ($b[$f[0]] < $a[$f[0]]) $strc = 1;
else $strc = 0;
} else {
$strc = strcmp($a[$f[0]],$b[$f[0]]);
}
if ($strc != 0){
return $strc;
}
break;
}
}
return 0;
}
http://php.net/manual/en/function.usort.php