Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数组中是否存在键/值对_Php - Fatal编程技术网

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
vs
0
之类的内容使用严格的键入如果您关心这些边缘情况……您还应该检查它是否为您提供了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
vs
0
之类的内容使用严格的键入如果您关心这些边缘情况……您还应该检查它是否为您提供了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
来比较键