如果有一个相当大的以下形式的多维数组(flickr EXIF数据)。
array(
(int) 81 => array(
'tagspace' => 'Nikon',
'tagspaceid' => (int) 0,
'tag' => 'ISOExpansion2',
'label' => 'ISOExpansion2',
'raw' => 'Off'
),
(int) 82 => array(
'tagspace' => 'Nikon',
'tagspaceid' => (int) 0,
'tag' => 'LensType',
'label' => 'Lens Type',
'raw' => 'G'
),
(int) 83 => array(
'tagspace' => 'Nikon',
'tagspaceid' => (int) 0,
'tag' => 'Lens',
'label' => 'Lens',
'raw' => '11-16mm f/2.8'
),...
)
是否有一种快速有效的方法来提取具有特定值的数组,即我将寻找键'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')
:
array(
(int) 81 => 'ISOExpansion2',
(int) 82 => 'LensType',
(int) 83 => 'Lens',...
)
答案 0 :(得分:1)
Set::classicExtract($exifarray, '{n}.tag');
会提取您已经看过的所有代码。
Set::matches(CakeBook link)用于查看单个商品或给定的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"上进行RegEx匹配。顺便说一下,在这里做正确的时尚。