/ / PHP बयान के रूप में काम नहीं करना चाहिए .. is_numeric और isset - php, if-statement

PHP अन्य कथन के रूप में काम नहीं कर रहा है .. is_numeric और isset - php, if-statement

निम्नलिखित में अगर .. और विवरण, मैं यह देखने की कोशिश कर रहा हूं कि क्या पहली बार, वहां 4 वें ब्रेडक्रंब (यूआरआई सरणी 4) है, और फिर यह देखने के लिए कि क्या यह एक नंबर है ..

लेकिन दोनों हमेशा सही, संख्या, अक्षर, या खाली होते हैं।

क्या कोई मुझे बता सकता है क्यों?

// 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))) {
...

निम्नलिखित हमेशा गलत के लिए मान्य होता है:

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)))) {
...

उत्तर:

उत्तर № 1 के लिए 1

भविष्य के संदर्भ के लिए, और किसी और के लिए इसे पढ़ना ।।

इस समस्या को ब्रेडक्रंब क्लास में ही हल किया गया था।

पिछले, ब्रेडक्रंब में विस्फोटित यूआरआई मूल्यों के साथ एक निजी सरणी थी। और मैंने एक एकल url सूचकांक का उपयोग करके पुनः प्राप्त किया:

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

लेकिन अगर मैं इस गेटर को सीधे एक इसेट को शामिल करने के लिए संशोधित करता हूं:

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

और फिर पहले का उपयोग करें else..if ओपी में .. समस्या हल हुई। यह काम करता हैं।