有没有办法在PHP中使用LINQ表达式? 例如,在C#中我可以执行以下操作:
List<string> names = new List<string>()
{
"Francisco",
"Ronald",
"Araújo",
"Barbosa"
};
var oneName = names.Where(x => x.Equals("Ronald")).FirstOrDefault();
在PHP中,我将如何执行以下操作?
names **.Where** (x => x.Equals("Ronald")) **.FirstOrDefault()**;
答案 0 :(得分:29)
有一些PHP库模仿LINQ的功能。例如:
在PHPLinq中,代码如下所示:
$names = array("Francisco", "Ronald", "Araújo", "Barbosa");
$oneName = from('$name')->in($names)
->where('$x => $x == "Ronald"')
->firstOrDefault('$name');
或者使用PINQ,它采用与PHP 5.3+不同的方法:
$oneName = \Pinq\Traversable::from($names)
->where(function ($x) { return $x == 'Ronald'; })
->first();
答案 1 :(得分:3)
我不推荐使用PHPLinq,因为它不是您在.NET中习惯使用的,即使它看起来像 LINQ。原因是:
PHPLinq的优点在于它是支持数据库的PHP的唯一 LINQ实现。它不再是唯一的,TimeToogo的PINQ也支持数据库,但在撰写本文时,PINQ唯一的LINQ提供商是MySQL演示。
如果您只需查询代码中的数组和对象,则应使用YaLinqo代替*。如果您需要数据库支持,唯一的选择是PHPLinq,但请注意其局限性。我强烈建议使用流行的生产就绪替代品,那里有足够的ORM,AR等。
使用YaLinqo的示例:
$names = array("Francisco", "Ronald", "Araújo", "Barbosa");
$oneName = from($names)->where('$x ==> $x == "Ronald"')->firstOrDefault();
* YaLinqo由我开发。