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 服务器成本更低?

4

3 回答 3

1

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

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

于 2013-06-04T19:24:09.403 回答
0

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

于 2013-06-04T19:28:55.627 回答
0

这更适合数据库。

您可能可以通过使用像SQLite这样的文件系统数据库来避免必须获得 SQL 服务器。

于 2013-06-04T19:32:03.050 回答