如果你需要在调用方法中使用 usort 和一个键,我写了这个作为工具
<?php
函数 usort_comparison($obj, $method, $key) {
$usorter = &new Usort($obj, $method, $key);
返回数组($usorter, "sort");
}
类 Usort {
函数 __construct($obj, $method, $key) {
$this->obj = $obj;
$this->method = $method;
$this->key = $key;
}
函数 sort($a, $b) {
返回 call_user_func_array(数组($this->obj, $this->method), 数组($a, $b, $this->key));
}
}
?>
<?php
需要 "util/usort.php";
类 Foo {
$items = 数组(FooBar(13), FooBar(2));
公共函数 sorter() {
usort($this-items, usort_comparison("Foo", "_cmp", "item"));
}
公共静态函数 _cmp($a, $b, $key) {
返回 strcasecmp($a->$key, $b->$key);
}
}
类 FooBar {
公共 $item;
函数 __construct($val) {
$this->item = $val;
}
}
?>
~ 一个简单的例子... 但我需要使用它,键在 switch 语句中被用来动态地选择对象的不同成员进行比较(比如,按 x 或 y 或 z 排序)