PHP Сортировать массив объектов на основе других атрибутов объектов - PullRequest
1 голос
/ 30 января 2012

У меня есть массив объектов Town, а затем другой объект (City), который содержит сортировку для первого объекта.

Class City
{
   $id
   $name
   $towns
   $town_id_order
   //etc
}

   Class Town
    {
        $id
        $name
        //etc
    }

Так что мне нужно иметь возможность сортироватьthe Town, основанный на City-> town_id_order

Я предполагаю, что это usort , но я не могу заставить его работать с объектами в качестве сортировки.

Это то, что я пробовал, но возвращает «Ожидается массив, а не строка»

function cmp($a, $b)
    {
        if ($a == $this->towns) {
            return 0;
        }
        return ($a < $this->towns) ? -1 : 1;
    }

    $a = $this->getTownsOrder();

    usort($a, "cmp");

Ответы [ 2 ]

1 голос
/ 30 января 2012

Простой foreach будет соответствовать вашим потребностям.

$ret = array();
$town_id_order = $city->town_id_order;
foreach ($towns as $town) {
    $ret[array_search($town->id, $town_id_order)] = $town;
}
1 голос
/ 30 января 2012
function cmp($a, $b)
{
    if ($a->towns == $b->towns) {
        return 0;
    }
    return ($a->towns < $b->towns) ? -1 : 1;
}

Я пытаюсь понять ваш код, но я думаю, что вышесказанное сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...