CakePHP 2.1:使用Set搜索值
如果有一个相当大的多维数组,其形式如下(flickrexif数据) 是否有一种快速有效的方法来提取具有特定值的数组,即我将查找键“Tag”的值“Lens”,并获取一个数组作为返回值: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' ) 此外,可
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.
}
}