@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")
читается очень тяжело и сложен для восприятия.
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 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;
}


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

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

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