我正在从flickrs API中获取一些JSON。我的问题是exif数据的顺序取决于相机的不同。所以我不能硬编码一个数组号来获取,例如,下面的相机型号。PHP有没有内置的方法来搜索关联数组的值并返回匹配的数组?在下面的示例中,我想搜索[label] => Model
并获取[_content] => NIKON D5100
。
如果你想让我详述,请告诉我。
print_r($exif['photo']['exif']);
结果:
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
)
)
发布于 2012-09-12 04:02:03
据我所知,没有这样的功能。虽然有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');
发布于 2015-07-22 12:31:19
$key = array_search('model', array_column($data, 'label'));
在较新版本的PHP中,特别是PHP 5 >= 5.5.0中,上述函数将起作用。
发布于 2014-12-10 03:21:17
$key = array_search('Model', array_map(function($data) {return $data['label'];}, $exif))
array_map()函数将数组的每个值发送到用户创建的函数,并返回包含用户创建的函数提供的新值的数组。在这种情况下,我们将返回标签。
array_search()函数在数组中搜索值并返回键。(在本例中,我们在从array_map返回的数组中搜索标签值'Model')
https://stackoverflow.com/questions/12376992
复制相似问题