【问题标题】:Filtering out array like in database queries像在数据库查询中一样过滤掉数组
【发布时间】:2013-05-31 07:40:03
【问题描述】:

我想知道是否有一种方法可以像在 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 服务器成本更低?

【问题讨论】:

标签: php database arrays filtering


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的。我现在在看 Lind,它自 2009 年以来就没有更新过。我会让这个话题保持开放状态,看看是否会弹出任何其他内容!
    • 但是像 Lind 这样的东西确实是我想要的。
    • 应该没问题。 AFAIK Linq 并不是那么新,如果在这种情况下实施已经完成,那么就没有什么理由继续开发了。
    【解决方案3】:

    这更适合数据库。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2011-03-21
      • 2022-11-04
      • 2014-03-31
      • 2017-01-28
      • 1970-01-01
      相关资源
      最近更新 更多