我正在编写某种接受关联数组作为参数的函数。
这个数组可以是:
- 空的
- 只有一个元素。用钥匙
pageParam
或者wrapperClass
键。 - 有两个元素。必须用
pageParam
和键控wrapperClass
。
现在我已经编写了这些检查以确保:
- 数组不超过 2 个元素。
- 该数组没有除
pageParam
and以外的任何元素wrapperClass
问题是,我的第二次检查工作不正常。这是我的代码:
public function init_paginator(array $parameters = array())
{
if(!empty($parameters))
{
// This check works
if(count($parameters) > 2)
{
throw new \Exception("Paginator only accepts 2 elements in array: pageParam and wrapperClass.");
}
// This check does not work, even if its condition is satisfied
if(!in_array(array_keys($parameters), array('pageParam', 'wrapperClass')))
{
throw new \Exception("Paginator only accepts 2 elements in array: pageParam and wrapperClass.");
}
// Code..
}
}
如果我输入如下数组参数,则始终会引发第二次检查中的异常:
array("dummyKey"=>"dummyValue")
array("dummyKey1"=>"dummyValue1", "dummyKey2"=>"dummyValue2")
array("pageParam"=>"test")
或者array("wrapperClass"=>"wrapper_class")
array("pageParam"=>"test", "wrapperClass"=>"wrapper_class")
最后两个输入让我感到困惑!尽管我的论点是正确的,但为什么会引发异常。