像在数据库查询中一样过滤掉数组


Filtering out array like in database queries

我想知道是否有一种方法可以过滤掉一个数组,就像你可以在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服务器成本更低?

如果只有几个过滤器,则可以编写自己的过滤器。否则,SQL可能是存储/查询这些数据的更好方法:

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

您可以为PHP使用Linq风格。Linq最初来自ASP.net,它的用途是使用类似于SQL的语言来过滤数据集。快速谷歌给了我这个:http://phplinq.codeplex.com/,但它似乎没有更新自2009年以来。也许还有其他的实现。

这更适合于数据库。

您可能能够通过使用文件系统数据库(如SQLite)来绕过必须获得SQL服务器的问题。