Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP 2.1:使用Set搜索值_Cakephp_Search_Set_Cakephp 2.1 - Fatal编程技术网

CakePHP 2.1:使用Set搜索值

CakePHP 2.1:使用Set搜索值,cakephp,search,set,cakephp-2.1,Cakephp,Search,Set,Cakephp 2.1,如果有一个相当大的多维数组,其形式如下(flickrexif数据) 是否有一种快速有效的方法来提取具有特定值的数组,即我将查找键“Tag”的值“Lens”,并获取一个数组作为返回值: array( 'tagspace' => 'Nikon', 'tagspaceid' => (int) 0, 'tag' => 'Lens', 'label' => 'Lens', 'raw' => '11-16mm f/2.8' ) 此外,可

如果有一个相当大的多维数组,其形式如下(flickrexif数据)

是否有一种快速有效的方法来提取具有特定值的数组,即我将查找键“Tag”的值“Lens”,并获取一个数组作为返回值:

array(
    'tagspace' => 'Nikon',
    'tagspaceid' => (int) 0,
    'tag' => 'Lens',
    'label' => 'Lens',
    'raw' => '11-16mm f/2.8'
)
此外,可以使用Set完成此操作吗?我仅通过使用
$extract=Set::classicExtract($exifarray,{n}.tag')
实现了以下目标:

Set::classicExtract($exifarray,{n}.tag')将提取您所看到的所有标记

()用于查看单个项或给定xpath是否符合特定条件。 但是我不确定这是否适用于字符串。 因此,如果你已经做到了:

$data = Set::classicExtract($exifarray, '{n}.tag');
您可以尝试:

foreach($data as $key => $test){
    if(Set:matches(array('0=Lens'), $test[$key])){
    //Logic to run when you have a match.
    }
}
如果这不起作用,您将不得不以相同的“foreach”方式对其进行正则表达式匹配,顺便说一句,这可能是正确的做法

还有一点注意: 现在已弃用(自Cake 2.2以来)。有一个新的更好的数组操作类-。看看吧

$data = Set::classicExtract($exifarray, '{n}.tag');
foreach($data as $key => $test){
    if(Set:matches(array('0=Lens'), $test[$key])){
    //Logic to run when you have a match.
    }
}