2013-06-04 1 views
2

Мне интересно, есть ли способ отфильтровать массив, как вы можете делать в SQL-запросах. Как WHERE, OR, LIMIT, ORDER BY (и т. Д.). Я кэширую свои таблицы в файлах JSON, чтобы избежать ненужных подключений mysql.Фильтрация массива, как в запросах базы данных

Поясню

Это мой пример массива

$array = array(
    0 => array('value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'value7'), 
    1 => array(1, '-1', 1, 'Google.com', 'http://google.com/', 'about:blank', 1), 
    2 => array(2, '-1', 2, 'Yahoo.com', 'http://yahoo.com/', 'about:blank', 1), 
    3 => array(1, '-1', 1, 'Bing.com', 'http://bing.com/', 'about:blank', 3), 
    4 => array(1, '-1', 1, 'Youtube.com', 'http://youtube.com/', 'about:blank', 3), 
    5 => array(1, '-1', 1, 'Facebook.com', 'http://facebook.com/', 'about:blank', 4), 
    6 => array(1, '-1', 1, 'Stackoverflow.com', 'http://stackoverflow.com/', 'about:blank', 3), 
); 

Теперь я хочу фильтровать мой массив из.

Допустим, мне нужны записи, где value7 равно 3 или value3 является Bing.com, или value2 равно -1. Возможно ли это сделать без сотен циклов и чеков?

Стоит ли это или будет стоить сервер SQL меньше?

+2

Отъезд: http://phplinq.codeplex.com, я считаю, что это то, что вы ищете – JB13

ответ

1

Возможно, у вас есть возможность написать собственные фильтры, если у вас есть только пара. В противном случае, SQL может быть лучший способ для хранения/запроса эти данные:

http://php.net/manual/en/function.array-filter.php

0

Вы можете использовать аромат Linq для PHP. Linq изначально из ASP.net, и его использование заключается в фильтрации наборов данных с использованием языка, аналогичного SQL. Быстрый google дал мне это: http://phplinq.codeplex.com/, но, похоже, он не обновлялся с 2009 года. Возможно, существуют и другие реализации.

+0

Да. Я смотрю на Линд прямо сейчас, он не обновлялся с 2009 года. Я оставлю эту тему открытой и посмотрю, всплывает ли что-нибудь еще! – Junior

+0

Но что-то вроде Линд действительно то, что я ищу. – Junior

+0

Это может быть хорошо. AFAIK Linq не так уж и новичок, и если реализация завершена в этом случае, было бы мало поводов для продолжения разработки. – Andri

0

Это лучше подходит для базы данных.

Возможно, вам удастся получить SQL-сервер, используя базу данных файловой системы, такую ​​как SQLite.

Смежные вопросы