Задать вопрос
@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 и всё прошлые значения удалились
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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...
Ответ написан
Вы смешали наполнение массива и сортировку. Не надо так. Сначала заполняете массив, а потом сортируете.

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽