当前位置: 首页 > 知识库问答 >
问题:

按值搜索关联数组

张鹏鹍
2023-03-14

我正在从flickrs API获取一些JSON。我的问题是exif数据的顺序因相机而异。所以我不能硬编码一个数组号来获得,例如,下面的相机型号。PHP是否有任何内置方法来搜索关联数组值并返回匹配数组?在下面的示例中,我想搜索[标签]=

如果你想让我详细说明,请告诉我。

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
                )

        )

共有3个答案

濮阳品
2023-03-14

$key=array_search('Model',array_map(函数($data){返回$data['标签'];}, $exif))

函数的作用是:将数组中的每一个值发送给一个用户自定义函数,并返回一个由用户自定义函数给出的新值数组。在这种情况下,我们将返回标签。

函数的作用是:在数组中搜索值并返回键。(在本例中,我们正在从array_map搜索返回的数组,以查找标签值“Model”)

越狐若
2023-03-14

据我所知,没有这样的功能。有数组搜索,但它不能完全满足您的需要。

我认为最简单的方法是自己写一个循环。

function search_exif($exif, $field)
{
    foreach ($exif as $data)
    {
        if ($data['label'] == $field)
            return $data['raw']['_content'];
    }
}

$camera = search_exif($exif['photo']['exif'], 'model');
施超
2023-03-14
$key = array_search('model', array_column($data, 'label'));

在PHP的最新版本中,特别是PHP 5

 类似资料:
  • 我想索引和搜索使用Lucene索引的数据片段。 例如。物品及其颜色 搜索示例 可能的解决办法 根据我在答案中发现的,显然我可以使用这种格式将这些添加到一个字段中。 如果我现在用这种格式的数据进行搜索,我不会得到任何结果。 null

  • 问题内容: 我有一个要在其中搜索并获取数组键的数组。 例子 假设我们有以下二维数组: 函数调用(第一个用户的uid)应返回。 函数调用应返回。 我尝试进行循环,但是我想要更快的执行代码。 问题答案: function searchForId($id, $array) { foreach ($array as $key => $val) { if ($val[‘uid’] === $id) { re

  • 我有一个数组,我想在其中搜索,并获取数组的键。 假设我们有以下2维数组: 函数调用(第一个用户的uid)应返回。 函数调用应该返回。 我试着做循环,但我想要一个执行速度更快的代码。

  • 我想按姓名、姓氏或电子邮件搜索用户,但由于我没有上述级别的用户密钥,我不知道如何实现这一点。我正在执行和管理员会话,因此它无法访问用户密钥。 我尝试过: 但它会把所有用户都带到数据库上。有什么想法吗?

  • 问题内容: 我有一个JSON对象数组,想返回一个特定的节点。为了简化我的问题,可以说数组看起来像这样: 例如,我想知道骑士的实力。函数,返回路径,使用路径运算符可以得到强度。有没有办法将两者结合起来,所以我可以做下面的事情? 我正在使用MySQL 8.0.15。 问题答案: 本质上,您的意思是将选择和投影应用于JSON文档的数组元素和对象字段。您需要执行WHERE子句之类的操作来选择数组中的“行”

  • LDAP新手。我们LDAP的排列方式是人和组。这些人拥有用户信息,如姓名、uid和邮件。组有组名和multiple member字段,该字段的值为cn=first Last,cn=People,dc=comic,dc=com,列出了属于组的成员。 目前从userid和password开始,执行两个搜索:1)通过在People base domain上搜索uid=value来获取用户,然后从用户获得