【发布时间】:2013-01-13 10:07:36
【问题描述】:
考虑以下场景:您有一个小的 MogoDB 集合或一个小的 MySQL 表(例如包含 1000 条记录,它也可能是只读的),它在您的应用程序中被广泛且重复地使用。
您决定将其所有内容提取到 PHP 数组并使用该数组,而不是向 DB 发送大量查询。
在上述场景中,我们如何以类似于检索数据库表记录的有效方式检索一些数组项?用于阵列或任何其他类似设施的 PDO 适配器 ...
【问题讨论】:
考虑以下场景:您有一个小的 MogoDB 集合或一个小的 MySQL 表(例如包含 1000 条记录,它也可能是只读的),它在您的应用程序中被广泛且重复地使用。
您决定将其所有内容提取到 PHP 数组并使用该数组,而不是向 DB 发送大量查询。
在上述场景中,我们如何以类似于检索数据库表记录的有效方式检索一些数组项?用于阵列或任何其他类似设施的 PDO 适配器 ...
【问题讨论】:
有著名的 php 的 C# LINQ 库的端口。
它为您提供了灵活的 oo 接口来查询数据源。
http://phplinq.codeplex.com/wikipage?title=Examples&referringTitle=Home
简单示例
// Create data source
$names = array("John", "Peter", "Joe", "Patrick", "Donald", "Eric");
$result = from('$name')->in($names)
->where('$name => strlen($name) < 5')
->select('$name');
虽然您可以结合使用 array_filter 和 php.net (http://pl1.php.net/manual/en/function.array-filter.php#87912) 提出的函数 niehztog,但我相信即使使用少量数据,您仍然会发现查询 db 比尝试使用数组更快处理。
请记住,MySQL 会缓存查询结果 - 因此您只需通过重复查询而不是磁盘来访问内存。
【讨论】: