PHP中的Linq-用SQL语法操作PHP数组

最近在看.net的新功能Linq,第一感觉,功能非常实用.
数组,字符串都可以用我们熟悉的 SQL 方式来查询,太方便啦!

就想看看PHP在这方面有没有这样的类库.

不查不知道,一查吓一跳,还真的有类似的类库,命名为PHPLinq.

PHPLinq的首页:
http://www.codeplex.com/PHPLinq

Examples

Examples can be found in the test package in the latest release.

A basic example

Let''s say we have an array of strings and want to select only the strings whose length is < 5. The PHPLinq way of achieving this would be the following:

// Create data source$names = array("John", "Peter", "Joe", "Patrick", "Donald", "Eric"); 

$result = from(''$name'')->in($names)            ->where(''$name => strlen($name) < 5'')            ->select(''$name''); 

Feels familiar to SQL? Yes indeed! No more writing a loop over this array, checking the string''s length, and adding it to a temporary variable.

You may have noticed something strange... What''s that $name => strlen($name) < 5 doing? This piece of code is compiled to an anonymous function or Lambda expression under the covers. This function accepts a parameter $name, and returns a boolean value based on the expression strlen($name) < 5.

An advanced example

There are lots of other examples available in the PHPLinq download, but here''s an advanced one... Let''s say we have an array of Employee objects. This array should be sorted by Employee name, then Employee age. We want only Employees whose name has a length of 4 characters. Next thing: we do not want an Employee instance in our result. Instead, the returning array should contain objects containing an e-mail address and a domain name.

First of all, let''s define our data source:

class Employee {    public $Name;    public $Email;    public $Age;

public function __construct($name, $email, $age) {        $this->Name     = $name;        $this->Email     = $email;        $this->Age        = $age;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sql
, php
, 数组
, array
, this
objects
php 数组操作、php 数组操作函数、php数组操作函数汇总、php操作数组的函数、php 数组操作大全,以便于您获取更多的相关知识。

时间: 2024-10-29 20:57:39

PHP中的Linq-用SQL语法操作PHP数组的相关文章

Linq To Sql CRUD操作示例

昨天简要的看了一下Linq To Sql 的操作方式,写了一个简单的CRUD操作的例子.去掉繁琐的理论,直接贴代码.[源代码下载] 我是新建了一个本地数据库,数据库字段如下:   根据这个结构,设计了一个实体类Book: [Table] public class Book { /// <summary> /// 图书ID /// </summary> [Column(IsPrimaryKey=true,DbType=("bigint"), IsDbGenerat

LINQ TO SQL级联操作

LINQ TO SQL 是.NET Framework 3.5 版的一个组件,提供了用于将关系数据作为对象管理的运行时基础结构.在LINQ to SQL 中,关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型.当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为SQL,然后将它们发送到数据库进行执行.摘自<MSDN>. 在关系数据库中,两个表之间的关联关系有三种情况:一对一关系,一对多关系,多对多关系.本系列对上述各种关系演示Linq To SQL如何实现

在ASP.NET中显示Linq To SQL输出的SQL语句

最近在使用Linq To SQL的时候,为了了解不同Linq语句对性能造成的不同影响,需要获得Linq To SQL生成的SQL语句. 如果是在桌面程序中,只需要 _context.Log = Console.Out; 即可在控制台输出SQL语句.可是在ASP.NET中又该怎么办呢? 这时我想起了StringWriter.用它就可以代替Console.Out帮我们接收输出的日志,保存在一个StringBuilder里. 于是构造一个辅助类: using System; using System.

linq to sql插入操作取回自增的ID

          首先我们来看一个简单的插入操作:         TestDataContext dc = new TestDataContext();         protected void Page_Load(object sender, EventArgs e)         {             tbl_User user = new tbl_User();             user.uname = "xy";             user.upw

.net中关于linq执行sql语句分页查询的功能

问题描述 publicList<V_NoEpay_User>GetOrderDatas(intstart,intcount,outinttotCount,DateTime?starTime,DateTime?endTime),应该怎么样来下逻辑呢,求大神们帮忙,如果能帮忙写出来就最好 解决方案 解决方案二:去Linq专区吧......现在Linq专区都成翻译了..解决方案三:returnquery.OrderBy(x=>排序条件).Skip((页码-1)*每页数).Take(每页数)解决

Linq to SQL加注Data Annotation在Asp.Net MVC2中的应用

一.写作前提 最近正在做一个Asp.Net MVC2的Project,用到了Linq to SQL,但是对于如何在MVC2中使用 Linq to SQL 生成的强类型加注Data Annotation,我们都知道在MVC2中我们可以定义自己的Model,然后给Model 加Data Annotation,从而在View中可以实现完美的Client Validation(这些Data Annotation也我们也可 以去自己定义).但是对于Linq to SQL 生成的强类型,我们有两个问题,第一

ADO.NET与ORM的比较(3) Linq to SQL实现CRUD

说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是 Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操 作数据库之外,大量的书籍中都是讲述使用Hibernate这个ORM工具来操作数据. 在.NET中操作数据库的方式有多种,除了最直接的方式就是使用ADO.NET之外, 还可以使用NHibernate这个Hibernate在.NET中的实现ORM,如果你对第三方的 ORM 持怀疑态度,你还可以使用来自微软的实现.根正苗红的Lin

一起谈.NET技术,LINQ to SQL快速上手 step by step

前言       最近接连遇到几个朋友问我同一个问题,就是关于.NET平台上ORM框架的选择.我想在这个讲求效率的时代,谁也不想手写SQL或存储过程去访问数据库了.大家都知道,在Java平台上,ORM这一块基本是Hibernate的天下.当然,相对轻量级的iBatis也有不错的表现.      不过谈到.NET平台,ORM框架似乎相对混乱了点.很多朋友问我的时候,往往会这样问:NHibernate.NBear和Castle该选择哪个?而当我反问:为什么不适用微软自带的Linq to Sql呢?对

LINQ to SQL语句(18)之运算符转换

运算符转换1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 此示例中,LINQ to SQL(使用默认泛型 Query)会尝试将查询转换为 SQL 并在服务器上执行.但 where 子句引用用户定义的客户端方法 (isValidProduct), 此方法无法转换为 SQL. 解决方法是指定 where 的客户端泛型 IEnumerable<T> 实现以替换