0

次の If..else ステートメントでは、最初に 4 番目のブレッドクラム (URI 配列 4) があるかどうかを確認し、次にそれが数値かどうかを確認しようとしています。

ただし、どちらも常に true、数字、文字、または空を返します..

誰でも理由を教えてもらえますか?

// checks the third breadcrumb contained within the breadcrumbs class to see
// if it is an article. Then uses a recursive function to search the first
// and second breadcrumbs to see if they exist within their respective menu
// arrays. finally, if that validates, then the fourth breadcrumb is checked
// to see if it exists (not empty) AND if it is a number.
else 
if (($this->breadcrumbs->getCrumb(3)=='article' && 
     $array_helper->recValueReturn($this->breadcrumbs->getCrumb(2),
     $this->getNavTwo()) && 
     $array_helper->recValueReturn($this->breadcrumbs->getCrumb(1),
     $this->getNavOne())) || ($this->breadcrumbs->getCrumb(4)) && 
     is_numeric($this->breadcrumbs->getCrumb(4))) {
...

以下は常に False に検証されます。

else
if (($this->breadcrumbs->getCrumb(3)=='article'&&
     $array_helper->recValueReturn($this->breadcrumbs->getCrumb(2),
     $this->getNavTwo()) &&
     $array_helper->recValueReturn($this->breadcrumbs->getCrumb(1),
     $this->getNavOne())) &&
     (array_key_exists($this->breadcrumbs->getCrumb(4),
      $this->breadcrumbs->getCrumbs())&&
      is_numeric($this->breadcrumbs->getCrumb(4)))) {
...
4

1 に答える 1

1

今後の参考のために、またこれを読んでいる他の人のために..

この問題は、BreadCrumbs クラス自体で解決されました。

以前は、ブレッドクラムには、展開された URI 値を持つプライベート配列がありました。そして、次を使用して単一の URL インデックスを取得しました。

public function getCrumb($x) { return $this->breadcrumbs[$x] }

しかし、このゲッターを直接変更して isset を含めると:

public function getCrumb($x) {
    if (isset($this->breadcrumbs[$x])) {
        return $this->breadcrumbs[$x];
    } else {
            return null;
    }
}

次に、最初のelse..ifをOPで使用します..問題は解決しました。できます。

于 2013-01-23T06:25:56.617 に答える