@venomphp

Как сортировать массив?

Не получается сотртировать массив по его значению, массив такой
array (
  0 => 
  array (
    'ID' => '1',
    'NAME' => '3131',
    'LAST_NAME' => '132',
    'SECOND_NAME' => '',
    'STATUS_WORK_DAY' => 'CLOSED',
  ),
  1 => 
  array (
    'ID' => '4',
    'NAME' => 'Павел',
    'LAST_NAME' => 'Иванов',
    'SECOND_NAME' => '',
    'STATUS_WORK_DAY' => 'CLOSED',
  ),
  2 => 
  array (
    'ID' => '5',
    'NAME' => 'Иван',
    'LAST_NAME' => 'Иванов',
    'SECOND_NAME' => 'Иванович',
    'STATUS_WORK_DAY' => 'CLOSED',
  ),
3 => 
  array (
    'ID' => '17',
    'NAME' => 'Автобус',
    'LAST_NAME' => 'Иванов',
    'SECOND_NAME' => 'Иванович',
    'STATUS_WORK_DAY' => 'OPENED',
  ),

я хочу что бы вначале у меня были элементы с STATUS_WORK_DAY => OPENED, а все остальные с closed, пытался вот так
$usersWithOpenedDay = [];
        foreach ($arAllUsers as $userId => $valueUserId) {
            $userTimeMan = new \CTimeManUser($valueUserId['ID']);
            $userSettings = $userTimeMan->GetSettings();
            $status = $userTimeMan->State();
            if ($userSettings['UF_TIMEMAN']) {
                $valueUserId += ['STATUS_WORK_DAY' => $status];
            }
            $usersWithOpenedDay[] = usort($valueUserId, function($a, $b) {
                if ($a['STATUS_WORK_DAY'] == 'OPENED') {
                    return 0;
                }
            });
        }

но в массив $usersWithOpenedDay попадают элементы с значением true и всё прошлые значения удалились
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Банальный usort
usort($arr, fn($a, $b)=>$b['STATUS_WORK_DAY']<=>$a['STATUS_WORK_DAY']);


https://phpize.online/sql/mysql57/undefined/php/ph...
Ответ написан
Вы смешали наполнение массива и сортировку. Не надо так. Сначала заполняете массив, а потом сортируете.

* я знаю про всякие олимпиадные задачки, но это не тот случай
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы