連想配列を引数として受け入れるある種の関数を書いています。
この配列は次のようになります。
- 空の
- 要素は 1 つだけです。
pageParam
または のいずれかのキーを使用しますwrapperClass
。 - 2つの要素があります。と でキーを設定する必要が
pageParam
ありwrapperClass
ます。
今、私はこれらのチェックを書いて、次のことを確認しました:
- 配列は 2 要素以下です。
pageParam
配列にはand以外の要素はありませんwrapperClass
問題は、私の 2 番目のチェックが正しく機能していないことです。これが私のコードです:
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..
}
}
次のような配列引数を入力すると、2 番目のチェックで例外が常にスローされます。
array("dummyKey"=>"dummyValue")
array("dummyKey1"=>"dummyValue1", "dummyKey2"=>"dummyValue2")
array("pageParam"=>"test")
またはarray("wrapperClass"=>"wrapper_class")
array("pageParam"=>"test", "wrapperClass"=>"wrapper_class")
最後の 2 つの入力は、私を困惑させるものです! 私の議論が正しいにもかかわらず、例外がスローされる理由。