If you need to use usort with a key in the calling method, I wrote this as a utility:<?phpfunction usort_comparison($obj, $method, $key) { $usorter = &new Usort($obj, $method, $key); return array($usorter, "sort");}class Usort { function __construct($obj, $method, $key) { $this->obj = $obj; $this->method = $method; $this->key = $key; } function sort($a, $b) { return call_user_func_array(array($this->obj, $this->method), array($a, $b, $this->key)); }}?><?phprequire_once("util/usort.php");class Foo { $items = array(FooBar(13), FooBar(2)); public function sorter() { usort($this-items, usort_comparison("Foo", "_cmp", "item")); } public static function _cmp($a, $b, $key) { return strcasecmp($a->$key, $b->$key); }}class FooBar { public $item; function __construct($val) { $this->item = $val; }}?>~ simple example... but in the way I need to use it was the key was used in a switch statement to choose the different member of the object to compare against dynamically (as in, sort by x or y or z)