Как отсортировать многомерный массив по определенному ключю и по длине строки?
Необходимо отсортировать многомерный массив по определенному ключю 'login' и по длине строки (Сперва самое длинное значение логина и так убывание)? подскажите пожалуйста
На входе так:
array:2 [
0 => Proxies\__CG__\App\Domain\User\Entity\User {#4050
+__isInitialized__: true
-id: 38
-login: "user-modera"
-password: "123456"
-group: "moderator_abm"
-name: null
-city: null
}
}
1 => Proxies\__CG__\App\Domain\User\Entity\User {#4049
+__isInitialized__: true
-id: 39
-login: "user-moderator"
-password: "123456"
-group: "moderator"
-name: null
-city: null
}
2 => Proxies\__CG__\App\Domain\User\Entity\User {#4049
+__isInitialized__: true
-id: 45
-login: "user"
-password: "123456"
-group: "moderator"
-name: null
-city: null
}
}
на выходе
array:2 [
1 => Proxies\__CG__\App\Domain\User\Entity\User {#4049
+__isInitialized__: true
-id: 39
-login: "user-moderator"
-password: "123456"
-group: "moderator"
-name: null
-city: null
}
0 => Proxies\__CG__\App\Domain\User\Entity\User {#4050
+__isInitialized__: true
-id: 38
-login: "user-modera"
-password: "123456"
-group: "moderator_abm"
-name: null
-city: null
}
}
2 => Proxies\__CG__\App\Domain\User\Entity\User {#4049
+__isInitialized__: true
-id: 45
-login: "user"
-password: "123456"
-group: "moderator"
-name: null
-city: null
}
}
Вот так получилось
$users = $this->toArray();
usort($users, function ($item1, $item2) {
return mb_strlen($item2->getLogin()) <=> mb_strlen($item1->getLogin());
});
Ответы (2 шт):
Автор решения: Evgenii Izhboldin
→ Ссылка
Если PHP 7+
Можно usort использовать, например вот так:
usort($array, function ($item1, $item2) {
return mb_strlen($item1['login']) <=> mb_strlen($item2['login']);
});
Автор решения: Bloom
→ Ссылка
<?php
$arrt=array('0' => array(
'+__isInitialized__'=> 'true',
'-id'=> '38',
'-login'=>'user-modera',
'-password' => '123456',
'-group' => 'moderator_abm',
'-name'=> 'null',
'-city'=> 'null'
),
'1' => array(
'+__isInitialized__'=> 'true',
'-id' =>'39',
'-login'=> 'user-moderator',
'-password' => '123456',
'-group' => 'moderator',
'-name'=> 'null',
'-city'=> 'null'
),
'2' => array(
'+__isInitialized__'=> 'true',
'-id' =>'45',
'-login'=> 'user',
'-password'=> '123456',
'-group'=> 'moderator',
'-name'=> 'null',
'-city'=> 'null'
)
);
foreach ($arrt as $key => $row)
{
$array_name[$key] = $row['-login'];
}
array_multisort($array_name, SORT_ASC, $arrt);
var_dump($arrt);
?>