note 22849 deleted from function.usort by crell
| From: | crell@php.net | Date: | Wed, 30 Mar 2022 22:15:48 +0000 |
| Subject: | note 22849 deleted from function.usort by crell | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-217818@lists.php.net to get a copy of this message | ||
Note Submitter: alex at netflex dot nl
----
This function will sort on more then one values, test and have fun
<pre>
<?php
$array[0]['name'] = "a";
$array[0]['id'] = 3;
$array[1]['name'] = "a";
$array[1]['id'] = 2;
$array[2]['name'] = "a";
$array[2]['id'] = 5;
$array[3]['name'] = "b";
$array[3]['id'] = 8;
$array[4]['name'] = "b";
$array[4]['id'] = 1;
$array[5]['name'] = "b";
$array[5]['id'] = 0;
$array[6]['name'] = "c";
$array[6]['id'] = 5;
$array[7]['name'] = "c";
$array[7]['id'] = 7;
$array[8]['name'] = "c";
$array[8]['id'] = 3;
print_r($array);
$sort_array[0]['name'] = "name";
$sort_array[0]['sort'] = "ASC";
$sort_array[0]['case'] = TRUE;
$sort_array[1]['name'] = "id";
$sort_array[1]['case'] = FALSE;
sortx($array, $sort_array);
print_r($array);
function sortx(&$array, $sort = array()) {
$function = '';
while (list($key) = each($sort)) {
if (isset($sort[$key]['case'])&&($sort[$key]['case'] == TRUE)) {
$function .= 'if (strtolower($a["' . $sort[$key]['name'] .
'"])<>strtolower($b["' . $sort[$key]['name'] . '"])) {
return (strtolower($a["' . $sort[$key]['name'] . '"]) ';
} else {
$function .= 'if ($a["' . $sort[$key]['name'] .
'"]<>$b["' . $sort[$key]['name'] . '"]) { return
($a["' . $sort[$key]['name'] . '"] ';
}
if (isset($sort[$key]['sort'])&&($sort[$key]['sort'] ==
"DESC")) {
$function .= '<';
} else {
$function .= '>';
}
if (isset($sort[$key]['case'])&&($sort[$key]['case'] == TRUE)) {
$function .= ' strtolower($b["' . $sort[$key]['name'] .
'"])) ? 1 : -1; } else';
} else {
$function .= ' $b["' . $sort[$key]['name'] . '"]) ? 1 :
-1; } else';
}
}
$function .= ' { return 0; }';
usort($array, create_function('$a, $b', $function));
}
?>
</pre>