@vinegred

Как выбрать первые 5 элементов массива соответвующие условию?

Пишу бота, который ищет информацию на сайте использую API и отдает результаты в личку ВКонтакте.

Вот как это работает:
1. Юзер пишет запрос боту
2. Бот получает результаты поиска в формате JSON
3. Отбирает те результаты, которые соответствуют условию
4. Возвращает юзеру результаты в личные сообщения

Для перебора результатов поиска использую foreach:

foreach ($search_results as $k => $v)

Мне нужно вернуть юзеру результаты которые соответвуют одновременно двум условиям:

  1. $v->type == buy
  2. $k < 5


Проблем в том, что в первых 5 элементах массива может не быть элементов подходящих под 1 условие, но они могут быть дальше. Я не пойму как написать if, чтобы скрипт учитывал не порядковый номер положения в массиве, а чтобы он останавливал foreach, если набралось первые 5 элементов соответствующих условию 1, но не обязательно что они первые 5 по порядку в массиве.
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F
$filtered = array_slice(array_filter($search_results, function($n) {
  return условие;
}), 0, 5);

или

$filtered = [];

foreach ($search_results as $n) {
  if (условие) {
    $filtered[] = $n;
  }

  if (count($filtered) === 5) {
    break;
  }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы