mrusklon
@mrusklon
Не получается? Яростно гугли!

Как убрать из массива лишних людей?

$stmt6Arr = $stmt6->fetchAll(PDO::FETCH_ASSOC); 
                        while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
                            $iterate++;
                            foreach ($stmt6Arr as $fav) {
                                if ($data['users_id'] == $fav['fav_user_id']) {
                                       оставить в массиве data только пользователей которые совпали
                                } else {

                                }
                            }
                        }

есть 2 массива stmt6Arr , в нем список "избранных" сотрудников, он короткий но там только их id
второй массив $data со всеми пользователями и еще кучей лишних данных которые далее используются по необходимости
я хочу второй массив обрезать до длинны первого чтобы оставить в массиве data только пользователей которые совпали как написал в условии
подскажите как это сделать?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Ваш подход к задаче неверен. Зачем вытаскивать все записи из базы и затем фильтровать, когда можно получить только нужные выполнив правильный запрос:
$favorites = [103, 105];

$favorite_ids = implode(',', $favorites);

$query = sprintf('SELECT * FROM employees WHERE employee_id IN (%s)', $favorite_ids);

run php online
Ответ написан
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
https://www.php.net/manual/ru/function.array-inter... + https://www.php.net/manual/ru/function.array-column.php
Ну условие у вас верное, просто записывайте $data в массив результата, и его возвращайте, else там лишнее
Ещё вариант это исключать самим запросом
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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