Как отсортировать многомерный массив по определенному ключю и по длине строки?

Необходимо отсортировать многомерный массив по определенному ключю '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);

?>
→ Ссылка