| Autor | Zpráva | ||
|---|---|---|---|
| Trsak Profil |
Zdravím,
mám například následující objekt: array (3) 0 => stdClass #1145 name => "Useear" (6) parent => "Admin" (5) 1 => stdClass #32cc name => "__User164" (8) parent => "Moderator" (5) 2 => stdClass #54a3 name => "User165" (9) parent => "Admin" (7) A potřeboval bych to vše seřadit tak, aby prvně byly parent = Admin, pak parent = Moderator a nakonec parent = User, .. Jak na to? Zkoušel jsem následující: $col = 'parent';
$sort = array();
foreach ($admins as $i => $obj) {
$sort[$i] = $obj->{$col};
}
array_multisort($sort, SORT_ASC, $admins);Ale to seřadí podle parent abecedně |
||
| juriad Profil |
#2 · Zasláno: 24. 8. 2015, 18:41:07
Jednoduše takto:
usort($pole, function($a, $b) {return strcmp($a->parent, $b->parent);}); |
||
| Trsak Profil |
#3 · Zasláno: 24. 8. 2015, 18:44:26
To byl jen příklad, mám tam více parentů a abecedně to nevychází.
|
||
| juriad Profil |
Aha, v tom případě zkus třeba:
usort($pole, function($a, $b) {
$parents = array_flip(array('Admin', 'Moderator', 'User')); # toto každému parentovi přidějí číslo (uveď je v žádaném pořadí)
return strcmp($parents[$a->parent], $parents[$b->parent]);
});$parents = array_flip(array('Admin', 'Moderator', 'User')); # toto každému parentovi přidějí číslo (uveď je v žádaném pořadí)
usort($pole, function($a, $b) use ($parents) {
return strcmp($parents[$a->parent], $parents[$b->parent]);
}); |
||
| Trsak Profil |
#5 · Zasláno: 24. 8. 2015, 18:56:53
Super! Díky moc
|
||
|
Časová prodleva: 11 let
|
|||
0