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

时间:2013-06-04 19:19:51

标签: php database arrays filtering

我想知道是否有一种方法可以过滤掉数组,就像在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。 没有数百个循环和检查,这可能是todo吗?

值得吗,还是SQL服务器的成本更低?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这更适合数据库。

您可以通过使用SQLite等文件系统数据库来获取SQL服务器。