PHP: Return 与关联数组中的特定键关联的值

PHP: Return value associated with specific key in an array of associative arrays

在 PHP 5.5+ 中,如何检查给定的关联数组数组是否包含特定的 key/value 对。例如:

$some_array = array(
            array(
                "value"=> 1,
                "k1"=> "austin",
                "k2"=> "texas",
                "k3"=> "us"
            ),
            array(
                "value"=> 15,
                "k1"=> "bali",
                "k2"=> "ubud",
                "k3"=> "indonesia"
            ),
            array(
                "value"=> 26,
                "k1"=> "hyd",
                "k2"=> "telangana",
                "k3"=> "india"
            )
));

如何 return 与 k1='bali'、k2='ubud' 和 k3='indonesia' 关联的值?我可以遍历每个元素来检查数组中是否存在该组合,但是有没有更简单的方法来处理这个问题?

如果您有键和值的目标数组,您可以使用 array_diff_assoc.[= 过滤主数组以仅包含与目标数组中所有 key/value 组合匹配的子数组20=]

$target =array(
    "k1"=> "bali",
    "k2"=> "ubud",
    "k3"=> "indonesia"
);

$matches = array_filter($some_array, function($item) use ($target) {
    return !array_diff_assoc($target, $item);
});

array_filter 回调中,array_diff_assoc 将 return $target$item 中不存在的所有 key/value 对,所以如果它们都匹配,你会得到一个空数组。使用 ! 否定该结果将 return true 用于匹配数组,false 用于 non-matching 数组。

$matches 将是与您的 key/value 对匹配的所有子数组的数组,或者如果 none 匹配则为空数组。