LINQ表达式?

时间:2013-08-16 13:49:38

标签: php linq

有没有办法在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()**;

2 个答案:

答案 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。原因是:

  1. 通话顺序是固定的(结果可能不是您所期望的)。
  2. 这不是真正的懒惰。
  3. 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由我开发。