note 22849 added to function.usort

From: Date: Tue, 02 Jul 2002 08:10:26 +0000
Subject: note 22849 added to function.usort
Groups: php.notes 
Request: Send a blank email to php-notes+get-32493@lists.php.net to get a copy of this message
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> -- http://www.php.net/manual/en/function.usort.php http://master.php.net/manage/user-notes.php?action=edit+22849 http://master.php.net/manage/user-notes.php?action=delete+22849 http://master.php.net/manage/user-notes.php?action=reject+22849

« previous php.notes (#32493) next »