Задать вопрос
@MIKEk8

Существует ли, PHP библиатека для фильтрации массива sql запросом?

Довольна часто случается ситуация когда есть массив данных
$arr=[
["name"="Коля", "age"="13", "sex"="m"],
["name"="Вася", "age"="20, "sex"="m"],
["name"="Оля", "age"="10", "sex"="f"],
];
И из него надо с начало вынуть всех мальчиков до 15, потом всех Оль от 5, ну и тому подобное.

Есть ли какая библиотека на PHP для этого? Желательно с языком запросов (SQL например) т.к. последовательный вызов фильтров
finedIn($arr)->filter("age",20)->filter("sex","m")
читается очень тяжело и сложен для восприятия.
  • Вопрос задан
  • 224 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
Можно использовать https://github.com/illuminate/support
В нем есть Collection, который умеет вытворять много полезного с массивами\объектами.
Там же есть filter, find, contains и другие функции.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Можно создать таблицу, залить туда данные, и выбрать при помощи SQL. Производительность скорее всего будет так себе, но герои не ищут легких путей. И плевать на проклятия от тех, кто влезет в этот код позже.

На "сыром" php это могло бы выглядеть как-то так:
$result = array_filter($data, function($d){
  return $d['sex'] == 'm' && $d['age'] <= 15;
});


Или даже так
$boys = array_filter($data, 'filterBoys');

// а где-то там, в другом месте
function filterBoys($d){
  return $d['sex'] == 'm' && $d['age'] <= 15;
}


А если вам заранее известны все критерии отбора, вы можете все результаты отобрать за один проход.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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