我有一个Town对象数组,然后是另一个对象(City),它包含第一个对象的排序。
Class City
{
$id
$name
$towns
$town_id_order
//etc
}
Class Town
{
$id
$name
//etc
}
所以我需要能够根据City-> town_id_order对城镇进行排序
我猜这是usort但是我无法将其作为排序使用对象。
这是我尝试过的,但返回'Expects array not string'
function cmp($a, $b)
{
if ($a == $this->towns) {
return 0;
}
return ($a < $this->towns) ? -1 : 1;
}
$a = $this->getTownsOrder();
usort($a, "cmp");
答案 0 :(得分:1)
function cmp($a, $b)
{
if ($a->towns == $b->towns) {
return 0;
}
return ($a->towns < $b->towns) ? -1 : 1;
}
我正在尝试了解您的代码,但我认为上述代码可以正常工作。
答案 1 :(得分:1)
简单的foreach将满足您的需求。
$ret = array();
$town_id_order = $city->town_id_order;
foreach ($towns as $town) {
$ret[array_search($town->id, $town_id_order)] = $town;
}