Php 检查数组中是否存在键/值对
我需要检查一组查询参数是否存在于一组较大的查询参数中。例如,我想检查Php 检查数组中是否存在键/值对,php,Php,我需要检查一组查询参数是否存在于一组较大的查询参数中。例如,我想检查数组('option'=>'com\u pages','view'=>'page')是否存在于: Array ( [option] => com_pages [format] => html [view] => page ) 或 我试图找到一个php函数来提供这种搜索,但找不到任何与我所寻找的匹配的函数。因此,我创建了以下函数: function checkRoute($params,
数组('option'=>'com\u pages','view'=>'page')
是否存在于:
Array
(
[option] => com_pages
[format] => html
[view] => page
)
或
我试图找到一个php函数来提供这种搜索,但找不到任何与我所寻找的匹配的函数。因此,我创建了以下函数:
function checkRoute($params, $request) {
foreach($params as $key => $value) {
if(!array_key_exists($key, $request)) {
return false;
}
if($request[$key] != $value) {
return false;
}
}
return true;
}
其中,$request
是当前请求的查询参数数组
对于我缺少的数组函数,有没有更快的方法来执行此操作?您可以对两个数组使用一个
数组\u intersect\u assoc
,并检查结果的计数是否等于预期匹配数
if ( count(array_intersect_assoc($a, $b)) == count($a) ){
// then match ...
}
您可以对两个数组使用
数组\u intersect\u assoc
,并检查结果计数是否等于预期匹配数
if ( count(array_intersect_assoc($a, $b)) == count($a) ){
// then match ...
}
你会期望它在你的两个例子中都是真的吗?您希望它在空数组上也返回true吗?
isset($request[$key])
将比array\u key\u exists()
更快,或者至少是几年前。。。英雄联盟从语义上来说,我也会对if进行梳理,if(!isset($request[$key])| |$request[$key]!=$value)
并对false
vs0
之类的内容使用严格的键入如果您关心这些边缘情况……您还应该检查它是否为您提供了arrays@EarthDragon-这是个好主意,但我会使用数组\u intersect\u assoc
来代替,这样键就被选中了。@EarthDragon,不,我想在第二个例子中选false。我查看了array\u intersect\u assoc
,但我想检查所有的键/值对是否都存在于这两个示例中,这样我就不必检查结果了,除非我遗漏了什么。您希望在两个示例中都返回true吗?您希望它在空数组上也返回true吗?isset($request[$key])
将比array\u key\u exists()
更快,或者至少是几年前。。。英雄联盟从语义上来说,我也会对if进行梳理,if(!isset($request[$key])| |$request[$key]!=$value)
并对false
vs0
之类的内容使用严格的键入如果您关心这些边缘情况……您还应该检查它是否为您提供了arrays@EarthDragon-这是个好主意,但我会使用数组\u intersect\u assoc
来代替,这样键就被选中了。@EarthDragon,不,我想在第二个例子中选false。我查看了array\u intersect\u assoc
,但我想检查所有的键/值对是否都存在于两者中,这样我就不必检查结果了,除非我遗漏了什么。with..==数一数($a)好得多。。谢谢@Nicholasjohn16根据@ArtisticPhoenix的建议,您应该使用array\u intersect\u assoc
来比较按键与..==数一数($a)好得多。。谢谢@Nicholasjohn16根据@ArtisticPhoenix的建议,您也应该使用array\u intersect\u assoc
来比较键