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 匹配则为空数组。
在 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 匹配则为空数组。