2014-02-26 46 views
0

Set::extract是一个非常强大的函数,用于过滤从find方法检索到的数据。 但是,据我所知,结果不是嵌套的。我的意思是,如果我有一个像Cakephp使用Set来过滤来自查询的结果

data = 
Array (
0 => array(
    'User' => Array (...), 
    'Profile => Array (...) 
    ) 
1 => array(
    'User' => Array (...), 
    'Profile => Array (...) 
    ) 
) 

一个数组,我会提取所有的用户,比方说,User.type =1,我会做:

$filtered Set::extract('/User[type=1',$data). 

$filtered = Array(
0 => Array (
    'User' => Array() 
) 
) 

和其他阵列,配置文件,不显示。使用提取进行过滤时可以获取所有数据吗?

回答

1

您可以在第一个参数中使用/../遍历数组路径。

尝试

$filtered = Set::extract('/User[type=1]/..',$data); 

来源:http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#Set::extract

它说,这是基本的XPath 2.0语法和其中一个例子使用它。

+0

太棒了!你能指出我在文件解释'..'的位置吗? – giuseppe

+0

哇真的这是最好的答案。 – Andolasoft

+0

另一个问题是如何强制分页程序使用过滤结果.... – giuseppe