我从flickrs API中获取了一些JSON.我的问题是exif数据的顺序不同,具体取决于相机.所以我不能硬编码数组来获得,例如,下面的相机模型.PHP是否有任何内置方法来搜索关联数组值并返回匹配数组?在我下面的例子中,我想搜索[label] => Model并获取[_content] => NIKON D5100.
如果您要我详细说明,请告诉我.
print_r($exif['photo']['exif']);
Run Code Online (Sandbox Code Playgroud)
结果:
Array
(
[0] => Array
(
[tagspace] => IFD0
[tagspaceid] => 0
[tag] => Make
[label] => Make
[raw] => Array
(
[_content] => NIKON CORPORATION
)
)
[1] => Array
(
[tagspace] => IFD0
[tagspaceid] => 0
[tag] => Model
[label] => Model
[raw] => Array
(
[_content] => NIKON D5100
)
)
[2] => Array
(
[tagspace] => IFD0
[tagspaceid] => 0
[tag] => XResolution
[label] => X-Resolution
[raw] => Array
(
[_content] => 240
)
[clean] => Array
(
[_content] => 240 dpi
)
)
Run Code Online (Sandbox Code Playgroud)
小智 46
$key = array_search('model', array_column($data, 'label'));
Run Code Online (Sandbox Code Playgroud)
在更新版本的PHP中,特别是PHP 5> = 5.5.0,上面的函数将起作用.
Gol*_*rol 17
据我所知,没有这样的功能.有array_search,但它不是你想要的.
我认为最简单的方法是自己编写一个循环.
function search_exif($exif, $field)
{
foreach ($exif as $data)
{
if ($data['label'] == $field)
return $data['raw']['_content'];
}
}
$camera = search_exif($exif['photo']['exif'], 'model');
Run Code Online (Sandbox Code Playgroud)
mol*_*ins 14
array_search('Model',array_map(function($ data){return $ data ['label'];},$ exif))
实现起来相当简单:
$model = '';
foreach ($exif['photo']['exif'] as $data) {
if ($data['label'] == 'Model') {
$model = $data['raw']['_content'];
break;
}
}
Run Code Online (Sandbox Code Playgroud)