как отсортировать следующий объект массива/стандартного класса в php?

Как отсортировать этот объект по «позиции» в php?

Array ( 
[0] => stdClass Object ( [str] => Mondays [pos] => 170 ) 
[1] => stdClass Object ( [str] => Tuesdays [pos] => 299 )
[2] => stdClass Object ( [str] => Wednesdays [pos] => 355 )
[3] => stdClass Object ( [str] => Thursdays [pos] => 469 )
[4] => stdClass Object ( [str] => Fridays [pos] => 645 )
[5] => stdClass Object ( [str] => Mondays [pos] => 972 )
[6] => stdClass Object ( [str] => Tuesdays [pos] => 1033 ) 
[7] => stdClass Object ( [str] => Thursdays [pos] => 1080 )
[8] => stdClass Object ( [str] => Fridays [pos] => 1180 ) 

)


person significance    schedule 27.01.2010    source источник
comment
По чему вы хотите отсортировать массив? ул? поз?   -  person Pekka    schedule 27.01.2010


Ответы (2)


Вероятно, вы могли бы использовать семейство функций usort() для сортировки. на str или pos. Для этого вы должны определить свою собственную функцию сравнения.

Пример псевдо-PHP:

function compareItems($a, $b)
{
    if ( $a->pos < $b->pos ) return -1;
    if ( $a->pos > $b->pos ) return 1;
    return 0; // equality
}

uasort($yourArray, "compareItems");

В зависимости от ваших потребностей более подходящими могут быть другие функции сравнения.

person csl    schedule 27.01.2010

Попробуйте эту функцию

function objSort(&$objArray,$indexFunction,$sort_flags=0) {
    $indices = array();
    foreach($objArray as $obj) {
        $indeces[] = $indexFunction($obj);
    }
    return array_multisort($indeces,$objArray,$sort_flags);
}
person streetparade    schedule 27.01.2010
comment
Возможно, небольшое пояснение было бы полезно? - person csl; 27.01.2010