@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;
}


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

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

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