Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как отсортировать массив массивов строк в js?

Лучший ответ:
Данная задача в принципе не решается сортировкой, так как сортировка это про отношение больше/меньше/равно, которого в данном случае нет.
Самое простое здесь, это построить из этих элементов двусвязный список, а затем преобразовать его в результирующий массив:function orderArray(arr) {
  // для начала построим ноды списка и соберем их в 2 HashMap по обоим строкам
  const maps = arr.reduce((acc, item) => {
    const node = {item, next: null, prev: null};
    acc[0][item[0]] = node;
    acc[1][item[1]] = node;
    return acc;
  }, [{}, {}]);

  // после пройдемся по обоим HashMap и соединим связи
  for(const key of Object.keys(maps[0])) {
    maps[0][key].next = maps[0][maps[0][key].item[1]] || null;
  }
  for(const key of Object.keys(maps[1])) {
    maps[1][key].prev = maps[1][maps[1][key].item[0]] || null;
  }

  // найдем начальную ноду списка (ноду без предыдущей ноды)
  let cur = Object.values(maps[0]).find(({prev}) => prev === null);

  // и начиная с нее соберем список в массив
  const result = [];
  while(cur) {
    result.push(cur.item);
    cur = cur.next;
  }

  return result;
}

console.log(orderArray([['butter', 'jelly'], ['bananas', 'apples'], ['peanuts', 'butter'], ['jelly', 'bananas']]));

Худший ответ:
Раз такое дело, Дмитрий Беляев, Роман, оцените.)
(() => {
  const orderArray = (arr) => {
    const itemsForMap = arr.map((items) => ([items[0], { items, prev: undefined }]))
    const itemsMap = new Map(itemsForMap);

    let last;
    itemsMap.forEach((node) => {
      const next = itemsMap.get(node.items[1]);
      if(next) {
        next.prev = node;
      }
      else {
        last = node;
      }
    });

    const result = [];
    result.length = arr.length;

    let current = last;
    for(let i = result.length - 1; i > -1; i--) {
      result[i] = current.items;
      current = current.prev;
    }

    return result;
  };
  
  return orderArray([['butter', 'jelly'], ['bananas', 'apples'], ['peanuts', 'butter'], ['jelly', 'bananas']]);
})()
Вроде всё верно, но я это в 7 утра перед сном писал...
Вопрос: Что нужно знать, чтобы написать простенький парсер на Python?

Лучший ответ:
Нужно знать как загрузить то что будете парсить (файл, веб страницу).
И как взять из полученных данных то что вам нужно.

Худший ответ:
Нужно знать как загрузить то что будете парсить (файл, веб страницу).
И как взять из полученных данных то что вам нужно.
Вопрос: Как удалить обьект при столкновении персонажа с ним?

Лучший ответ:
Вы правильно написали метод проверки соприкосновения, теперь напишите так:
private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("tag"))
        {
            Destroy(collision.gameObject);
        }
    }
Где tag - тег Ваших всех клонов

Худший ответ:
Если это 2д игра, то у каждого ведь есть некий regidbody и там делаешь проверку, если коснулся, то дед.
Вопрос: С чего начать джуну в бэкэнде?

Лучший ответ:
Хочешь стать программистом - учи сначала языки (PHP, SQL, плюс хотя бы базово JS, HTML), потом фреймворк
Хочешь стать ремесленником, типа сапожника 100 лет назад - учи цмс.

Худший ответ:
Я рекомендую начать изучать October CMS. Она основана на Laravel. Да многие решения свои (API CMS поверх API фреймворка), но знание October это на 80% знание Laravel. Стартовать с сразу с фрейморвка будет, очевидно, сложнее. А с помощью October получится такой "мягкий" вход в мир Laravel.

При этом вы освоите два инструмента, каждый из которых решает свои задачи. CMS - более менее типовые (но с оооочень большим запасом кастомизации, фрейморк - более кастомные).

Удачи!

P.S. Не знаю, как осбтоят дела у Joomla, но MODX загибается. Нача изучать его сейчас можно конечно на какое-то время стать специалистом по "мирающей" системе, где со временем будет дефицит кадров и можно будет задирать ценник. Но при этом вы вложитесь в изучение, мало того, что умирающего продукта, так еще и со вагоном своих "in house" решений, т.о. знания, полученные при работе с MODX, за пределами ее экосистемы никому не нужны в большинстве своем.
Вопрос: Почему iframe зло?

Лучший ответ:
Нипочему. Это добро.

Худший ответ:
Этих причин кому-то достаточно. Но всё равно iframe юзают, и довольно часто.
Reason #1. Iframes Bring Security Risks 

If you create an iframe, your site becomes vulnerable to cross-site attacks.

    You may get a submittable malicious web form, phishing your users' personal data.
    A malicious user can run a plug-in.
    A malicious user can change the source site URL.
    A malicious user can hijack your users' clicks.
    A malicious user can hijack your users' keystrokes.

Don't put your visitors at risk to the XSS attacks.

Reason #2. Iframe Cause Usability Issues

The iframe tag is notorious for creating usability annoyances. Among most common of them are:

    It tends to break the browsers' "Back" button.
    It confuses visually impaired visitors, using screen readers.
    It confuses users, suddenly opening the iframe content in a new browser window.
    Content within the iframe doesn't fit in and looks odd.
    Content within the iframe is missing since the source URL changed.
    Navigation of the site in the iframe stops working. 
    Every  in a page requires increased memory and other computing resources.

Find better ways to refer your visitors to external content instead of placing it within the iframe tag.
Вопрос: Хочу понять, с чего мне начать путь в геймдев?

Лучший ответ:

Вот эта картинка описывает весь гейм дев. Я тоже думал, что делать игры это весело и интересно, пока не столкнулся с рутиной. В России на этом стеке платят меньше чем другим. Даже веб программисты в среднем получают больше, а *ли меньше. Делать игры сложно.
Я бы тебе посоветовал учить C# и вот почему: 
1. Выработает хороший стиль 
2. Подходит для разработки игры/веб разработки / десктопа и.т.д
3. Мощный и простой 
Если осилишь C# и тебе понравится, то дальше выбирай что ты хочешь программировать. Знание C# открывает тебе дверь не только к разработке игры, но и к другим языкам с Cишным синтаксисом.
Твой путь доложен быть таким.
1. 2 месяца ты изучаешь шарп и пишешь блокнот
2. 3-4 месяц нужно осмыслить ООП и написать калькулятор 
3. Дальше ты скачиваешь Unity и 1-2 месяца смотришь видео уроки и пытаешься что то сделать. Только давай без убийц ГТА, делаешь максимально простую игру. 
4. Оставшийся 3-4 месяца ты должен доделать игру , ты пишешь заново весь код, так как осознаешь что можешь лучше.
5. Новый год. За год ты должен разработать 3-4 игры, речь о мобильных играх так как ПК игры в одиночку сложно. Это твое портфолио, ищешь свою первую работу. 
И не забудь выучить алгоритмы и структуры данных) 
3

Худший ответ:
чувак, мне кажется ты не осилишь это.
а если еще не передумал, то начни с java или вообще js-python, хотя бы для ознакомления.
пили всякие простые вещи, постепенно увеличивай сложность проектов.
а c++ - это боль. можешь начать с него, но вкатываться будет тяжелее, чем если бы ты начал с чего-то другого.
есть еще c#, это как c++, только попроще, но и не так круто (хотя на счет споследнего утверждать не буду, т.к. я вообще не мостак в этой сфере, знаю чисто поверхностно...)
Вопрос: Ломается flex верстка при подключении Slick slider. Как исправить?

Лучший ответ:
Оберните каждый из элементов .reviews__item в дополнительный div.

Худший ответ:
Для .reviews__cards добавить min-width: 0; Мне помогло
Вопрос: Какую тему выбрать диплома?

Лучший ответ:
"А подшипники я выбираю деревянные, потому что это место в дипломе все равно никто не читает" (с)
Пишите на ту тему, которая Вам интересна и в то-же время актуальна. Развивайтесь прежде всего для себя.

Худший ответ:
1. Разработка адекватной технологии построения десктоп приложений на html+css+js.
2. Создание serverless backendless фреймворка.
3. Замена jsx на адекватное и уместное решение (скорее всего, json).
В действительности, тема зависит от уровня обучения (бакалавр, магистр, аспирант, специалист), руководителя, кафедры и университета в целом. Обычно, достаточно просто написать кучу какой-то непонятной запутанной воды, запихнуть всё, чему вас учили и написать красивую аннотацию. Ваш диплом никто никогда не прочитает. А защищать его вы будете по аннотации и презентации.
Вопрос: Какой выбрать квадракоптер для инвентаризации? и как проводить инвентаризацию?

Лучший ответ:
Эм...  Если у Вас штрих-код не метр на метр и в чётко определённом месте, то бесполезное занятие (позиционирование квадрика в помещении задача не из лёгких) - с этим у меня опыт неудачный есть.
Из считыватель - только камера, т.к. большинству считывателей необходима короткая дистанция, есть и более профессиональные, но и вес у них приличный вместе с ценой. 
Поэтому квадрик вместо карманного превращается в полноценный Фантом.
Лучше, конечно, что бы были Qr коды - их на картинке искать проще.
Мы когда-то разрабатывали с товарищем попытку автоматизировать.  Механика по принципу Дельта принтера, только на 2х троссах перемещалась по рядам. (Тонкостей механики не знаю, делал только программную часть).
Ну так вот, в итоге от этого отказались, т.к. один человек с переносным делает быстрее, т.к. если коробка на полке повёрнута не тем боком, то всё равно кантовать нужно её.
Тут всё по-моему зависит от задачи, которую нужно решить.
У нас задачи были такими:
1. Снизить количество "потеряшек" (в основном из-за того, что грузчики не на ту полку положили)
2. Снизить количество краж из коробок (именно когда товар вынимали из одной общей коробки).
В общем, обе проблемы решили разом путём установки весовых датчиков под каждое место с обязательным сканом коробки при погрузке на место.

Худший ответ:
Если у вас RFID-метки, то зачем квадрокоптер, полет и камеры?
RFID-сканер может читать пассивные RFID-метки до 2 метров (ВЧ) или до 10 метров (УВЧ и СВЧ). То есть просто провезите сканер между стеллажами и все.
Если надо полностью автоматизировать, то на стеллажах рельсы (например, из карниза для штор) + Raspberry Pi + моторчик + сканер.
Вопрос: Почему игровой ноутбук не загружает ни одну из ОС, пропадает изображение в ходе загрузки?

Лучший ответ:
В ремонт на замену видео чипа.

Худший ответ:
Попробуйте лайф флешку с линуксом. Например с убунтой...
Если не зафурычит - мне кажется проблема с видеочипом нвидиа
Вопрос: Где подтянуть знания по VDS?

Лучший ответ:
Практика, Google и документация.
Прошли времена всяких комьюнити. Информацию надо добывать.

Худший ответ:
Здравствуйте. Можете рассмотреть модуль интеграции с продуктом KernelCare от Cloudlinux, это программа, которая каждые часа ходит и проверяет наличие новых патчей, и устанавливает их автоматически. Так вы будете уверены, что ваша ОС имеет последние обновления, количество простоя сократится. https://www.ispsystem.ru/addons-modules/kernel-care
Также мы пишем подробную документацию, она по адресу https://docs.ispsystem.ru/ispmanager-lite
А если будут вопросы, то задавайте их из личного кабинета https://my.ispsystem.com, будем рады помочь :)
Вопрос: Изучил C#, написал пару своих проектов. Стоит ли переходить на С++?

Лучший ответ:
Да, переходи

Худший ответ:
С++ неплохо сочетается с C#, наш программист пишет на плюсах либы разных алгоритмов/злого матана, считает это на куда ядрах и потом подключает эти либы в шарп
т.е. быстрый низкоуровневый код написан на с++
на с# написано все остальное т.к. на нем приятней и быстрее реализовывать что-то
Вопрос: Какие алгоритмы нужно знать программисту?

Лучший ответ:
Это зависит от решаемых задач. Какие задачи решаете, такие алгоритмы и изучайте.

Худший ответ:
Неплохо бы знать какие часто применяемые алгоритмы существуют, но учить детали реализации на память особого смысла нет. 
Выбор пути, упаковка рюкзака, раскрой - откуда нам знать, что из этого вам понадобится?
В любом случае, вы пока довольно далеки от того, чтобы улучшать существующие алгоритмы. 
А пока используете уже изобретенные - подберите себе удобный справочник, или хоть в вики их читайте.
Вопрос: Как узнать используемую версию питона?

Лучший ответ:
ls -la `which python`
ls -la `which python3`
А так можно долго гадать.

Худший ответ:
Он показывает разные версии, видимо из-за автонастройки консоли при установке Python. Так возможно, когда устанавливали Python 3.7.0 "path" команда для консоли закрепилась как python, a python3 как версия 3.4.3
Вопрос: Как убрать эти огромные пробелы в строке в microsoft word?

Лучший ответ:
Вы ведь по "ширине" растягиваете, по-моему, такие пробелы и есть принцип его работы...
Какое поведение вы ожидаете тогда?

Худший ответ:
Ну хорошо, а как вы тогда растянете строчку по всей ширине, если не за счет пробелов? 
Что у вас будет тянуться, чтобы придать строке дополнительную ширину? 
Все советы из интернета - рабочие. 
Просто у вас, видимо, слова длинные и пробелов в строках мало. 
Что еще можно сделать. 
- Поставьте автопереносы (тогда ширина пробелов будет неизменной, а дополнительная ширина будет придаваться за счет части переносимых далее слов);
- Уменьшить шрифт;
- Уменьшить поля текста;
- И да, советы из интернета - это неразрывные пробелы. В вашей ситуации они не помогут )
Вопрос: Усиление яркости светодиода через транзистор?

Лучший ответ:
Вы нарисуйте схему, по этой картинке ничего не понять. Транзистор здесь должен использоваться для коммутации, а в цепи коллектора последовательно со светодиодом должен быть резистор, задающий ток через этот светодиод. Меньше сопротивление резистора -> больше ток -> ярче светодиод.

Худший ответ:
Вы б почитали про транзисторы.
Хотя б на Википедии, там такая фраза есть:
Выходное сопротивление транзистора меняется в зависимости от напряжения на управляющем электроде.
Вопрос: Как изменить URL на URL с портом?

Лучший ответ:
Редирект 301, например.
Но 80 порт должен кто-то слушать.

Худший ответ:
вариант2: проксирование средствами веб-сервера. смотри документацию на веб-сервер.
Вопрос: Почему после сохранения SVG в фигме он искажается?

Лучший ответ:
1. Все текстовые слои должны быть превращены в кривые:Скриншот
2. Все обводки, должны быть превращены в векторные объекты:Скриншот
3. Все векторные линии, должны иметь окончательную связь:ПлохоХорошо
К слову, это особенность любых векторных объектов, и фигма тут не причём.

Худший ответ:
Гранд мерси))) дизайнер нарисовал обводку , я и не заметила )))
Вопрос: БЭМ — Как правильно унаследовать элемент дочернего блока?

Лучший ответ:
Если есть возможность, используй модификатор для дочернего элемента блока юзер.
Если ты собираешься существенно изменить свойства блока — создавай новый блок. Чтобы в будущем не оказаться в ловушке у кода.
Можешь сделать обращение напрямую к блоку изображения (да, надо, чтобы изображение в таком случае тоже было блоком. Атомарность етить ее)., либо просто к изображению.

В целом первый вариант предпочтителен. Так как остальные могу спокойно привести не туда. Хотя первый и приведет к добавлению кода везде.

А твой вопрос в документации тут, в рубрике «как хотите, так и еб...» (На сайте не пашут анкоры, так что просто глянь, что в адресной строке и докрути).

Впрочем, в целом, такое обычно делать и не приходится. Жестко так миксовать в смысле. В этом и заключается принцип БЭМ, «взболтать, не смешивать».

Худший ответ:
Если есть возможность, используй модификатор для дочернего элемента блока юзер.
Если ты собираешься существенно изменить свойства блока — создавай новый блок. Чтобы в будущем не оказаться в ловушке у кода.
Можешь сделать обращение напрямую к блоку изображения (да, надо, чтобы изображение в таком случае тоже было блоком. Атомарность етить ее)., либо просто к изображению.

В целом первый вариант предпочтителен. Так как остальные могу спокойно привести не туда. Хотя первый и приведет к добавлению кода везде.

А твой вопрос в документации тут, в рубрике «как хотите, так и еб...» (На сайте не пашут анкоры, так что просто глянь, что в адресной строке и докрути).

Впрочем, в целом, такое обычно делать и не приходится. Жестко так миксовать в смысле. В этом и заключается принцип БЭМ, «взболтать, не смешивать».
Вопрос: Какие веб-технологии наименее требовательны к ресурсам памяти и ЦП сервера?

Лучший ответ:
Минимизировать потребление ресурсов позволит грамотная разработка, не хотите тратить лишнее - не тратьте. К сожалению затраты на саму разработку растут экспоненциально от сэкономленных ресурсов, начиная с определенного уровня это становится на столько накладно что проще купить больше железа чем платить очень дорогим разработчикам поддержку эффективного решения.

Советы:
* не используйте http rest с генерацией html на сервере (устаревший подход, но много готовых фреймворков его используют, у этого подхода только одно достоинство - дешевая горизонтальная масштабируемость), ваш бакэнд должен выглядеть готовым веб сервером и не должен на каждый запрос делать лишние инициализации.
* переносите все что только можно на сторону клиента, всякие single page application, в идеале бакэнд должен быть чем то типа прослойки к базе данных и авторизация, все остальное пусть работает на клиенте
* уменьшайте количество запросов (т.е. запросить 1 мб в виде одного файла менее ресурсоемко чем запросить сто по десять килобайт), никаких периодических запросов на сервер для проверки статусов, пользуйтесь вебсокетами
* все что неизменно или редко меняется должно быть статикой, на ее поддержку тратится несравнимо меньше ресурсов сервера
* не перебарщивайте с использованием готовых фреймворков, да это соблазняет простотой и получением готового результата путем комбинации решений как в конструкторе, но начиная с какого то момента ограничения подхода и борьба с особенностями и даже багами превысят затраты на самостоятельную разработку решения. Знаменитый анекдот 'как программист заваривает чайник' отличная иллюстрация того что готовые решения увеличивают затраты ресурсов и по простому это не исправить.
Готовые репозитарии решений это конечно отлично но вы должны понимать что не вы их поддерживаете а значит становитесь заложником чужих решений и разработчиков, на которых вы не влияете. А уж когда у вас критичная и финансовая информация, чужие готовые решения становятся огромной дырой в безопасности.

Худший ответ:
Во-первых, работающий на JVM Blynk способен обрабатывать сотни тысяч запросов в секунду на VPS'ке за 10 баксов. Во-вторых, ничто не мешает вам написать web-приложение на C, если нужна ещё более эффективная утилизация ресурсов.
Вопрос: Почему не применились css-cтили к сайту?

Лучший ответ:
Попробуй слэш убрать. Вместо href="/css/style.css"> сделать href="css/style.css">

Худший ответ:
Необходимо написать прямую ссылку на стили:
https://pavelfedorov2000.github.io/ghostbusters/cs...
Вопрос: Можно ли сделать функцию, которая вернёт первую выполненную команду?

Лучший ответ:
В пределах сессии (веб-приложения или одной страницы, если не используются фреймы, хотя для хромиум это вопрос исследования)  javascript выполняется в пределах одного процесса, это значит не получится запустить две функции в разных потоках чтобы они выполнялись одновременно... только последовательно.

Попробуйте web-workers, они по уму могут работать в отдельном процессе, т.е. запускаете два воркера в каждому своя функция и ждете кто первый вернет результат.... Но учтите, даже в случае многопоточного исполнения никаких гарантий что повторный вызов даст тот же результат по скорости.

Худший ответ:
приходит фотография от пользователя и скрипт её обрабатывает, есть 2 функции для обработки, и мне надо сделать так, чтобы пользователю отправлялся результат той функции, которая выполнится быстрее, поскольку в некоторых случаях быстрее выполняется 1 функция, а в некоторых вторая

Лучше выявить признаки, чтобы заранее понимать, какой вариант быстрее.

Условно распараллелить выполнение можно в web worker'ах: запускать два, ждать сообщений о готовности, приняв первое сообщение, отдать результат пользователю.
Вопрос: Каков правильный порядок тегов таблицы в HTML?

Лучший ответ:
Изменения в HTML 5.1 от HTML 5.0
Там написано Disallow tfoot before tbody. -- запретить tfoot перед tbody
Вот, почитай. 
https://www.w3.org/TR/html51/changes.html#features...
Многие учебники просто не успевают обновляться. Это нормально.

Худший ответ:
Tfoot после body
Вопрос: Как отображать различное содержимое в зависимости от домена?

Лучший ответ:
Смотрите сами:echo($_SERVER['SERVER_NAME']);

Худший ответ:
if($_SERVER['SERVER_NAME'] === 'site.ru'){
	// счетчик для site.ru
}elseif($_SERVER['SERVER_NAME'] === 'site.com'){
	// счетчик для site.com
}
Вопрос: Cимуляция движения тела по орбите?

Лучший ответ:
Если у вас реальные физические формулы, то я бы сказал что ожидаемый результат - движение тела по эллиптической орбите. 
Все тела в космосе так и летают. 
Более того, даже этот сдвиг эллипса на каждом круге - это то что происходит в реальности. 

Может у вас программа наоборот - слишком правильно работает?

Худший ответ:
Попробуйте увеличить скорость, посмотрите как меняется эксцентриситет эллипса.
Может при какой-то скорости эллипс станет неотличим от окружности.
Вопрос: Как завершить все процессы svchost, кроме системных?

Лучший ответ:
Ну типа они все системные.
Просканируйте систему антивирусом. DrWeb CureIt или там KVRT, это поможет.

Худший ответ:
Думаю что одной командой тут не обойтись.
Можно получить список запущенных svchost с PIDами и путем, затем отфильтровать его, убрав те, которые лежат в %SystemRoot%\System32. После этого уже можно прибивать оставшиеся в списке процессы по PIDу из списка.
tasklist полный путь не выводит. Полный путь можно получить с помощью:wmic process where "name='svchost.exe'" get Name,ProcessID,ExecutablePath
Правда для большей части запущенных у меня svchostов эта команда так же не дает полный путь в ExecutablePath (Win10 x64), предполагаю, что это какие-то вторичные порожденные процессы.
Вопрос: Каким будет аналог команды «ls -C»?

Лучший ответ:
Это просто форматирование вывода ls, ни на что по сути не влияет. Можно опустить.
https://www.man7.org/linux/man-pages/man1/ls.1.html

Худший ответ:
Это просто форматирование вывода ls, ни на что по сути не влияет. Можно опустить.
https://www.man7.org/linux/man-pages/man1/ls.1.html
Вопрос: Как стать разработчиком мобильных приложений: выбор языка?

Лучший ответ:
Если вы не сталкивались раньше с программированием,то для Android это Java,а потом kotlin.Если под IOS,то тут Swift,а потом objective c.

Худший ответ:
Начинайте с JavaScript
Вопрос: Как передать данные из хвоста ссылки на сервер?

Лучший ответ:
Это обычные гет запросы$field = !empty($_GET['start']) ? $_GET['start'] : 'значение не задано';

Худший ответ:
Но как мне отловить данные "start"?
https://core.telegram.org/bots#deep-linkingDeep linking
Telegram bots have a deep linking mechanism, that allows for passing additional parameters to the bot on startup. It could be a command that launches the bot — or an auth token to connect the user's Telegram account to their account on some external service.
Each bot has a link that opens a conversation with it in Telegram — https://telegram.me/. You can add the parameters start or startgroup to this link, with values up to 64 characters long. For example:https://telegram.me/triviabot?startgroup=test
Далее посмотреть в примерах:deep_linking.py
Пример на python, но думаю вы разберётесь.подсказка
Вам надо обрабатывать хэндлер /start.Telegram отдает данные через WebHook, но в json ответе нет нужных данных.
Вы бы показали как пытаетесь это сделать.
Вопрос: Сквозное преобразование массива?

Лучший ответ:
преобразовать
['a' => [11, 12], 'b' => [21, 22]]
в
[['a' => 11, 'b' => 12], ['a' =>21, 'b' => 22]]
Совершенно не очевидно, почему результат должен быть таким, как вы показали. Почему 12 из a становится значением свойства b, а 21 - наоборот? Опечатка? - наверное, в a исходного массива лежат значения свойств a результата, аналогично и с b.

array_map(fn($i) => array_combine(array_keys($arr), array_column($arr, $i)), array_keys(array_values($arr)[0]))

Худший ответ:
$array = ["a" => [11, 12], "b" => [21, 22]];

array_map(function($values) use (&$array) {
    $keys = array_keys($array);
    return array_reduce($values, function($carry, $value) use (&$keys) {
        $carry[array_shift($keys)] = $value;
        return $carry;
    }, []);
}, array_values($array));

Еще короче вариант
array_map(fn($key) => array_combine(array_keys($array), $array[$key]), array_keys($array))

Альтернативный
array_map(function ($key) use (&$array) {
    return array_combine(array_keys($array), $array[$key]);
}, array_keys($array));