2013-09-06 3 views
-1

나는이 IF 문을 만들려고 노력하고 경우에 작동합니다 :PHP - 많은 요인 문이

" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '') . " 

는 내가하고 싶은는 $currentpage/adver.php 또는 /editad.php 경우, 다음 "활성화"해야한다는 것입니다 인쇄.

위의 코드는 작동하지 않습니다. IF 문을 올바르게 작동하게하려면 어떻게합니까?

+0

" . ($currentpage == '/adver.php') ? 'active' : '' || ($currentpage == 'editad.php') ? 'active' : '' . " 

처럼 사용한다 '('및 ')'

를 사용하는 실수 있습니다 그런 식으로. '||'는':'와'?'보다 더 높은 우선 순위를 가지고 있기 때문에 아마 모든 종류의 나쁜 결과를 겪을 것입니다. –

답변

0

처럼 메뉴에 말 위의 기능을 사용할 수 있습니다

function is_active($script_name) { 
    if(basename($_SERVER['PHP_SELF']) == $script_name) { 
     return 'class="active"'; 
    } 
} 

같은 것을 사용 if 속기를 사용하면 다음과 같이 시도 할 수 있습니다.

" . ($currentpage == '/adver.php' ? 'active' : ($currentpage == 'editad.php' ? 'active' : '')) . " 

또는 내가 잘못 삼항 연산자을 사용하고 생각

" . (in_array($currentpage, array('/adver.php', 'editad.php')) ? 'active' : '') . " 
+0

제안한 3 진 PHP 코드를 사용할 때 출력되는 것은 "활성"입니다. 일반 텍스트로 작성된 "활성". HTML 코드가 비활성화됩니다. – oliverbj

3

$_SERVER['PHP_SELF']에 사용 basename()은 현재 스크립트 파일 이름을 얻고

if(basename($_SERVER['PHP_SELF']) == 'adver.php' || basename($_SERVER['PHP_SELF']) == 'editad.php') { 
    echo 'class="active"'; //Whatever you want to echo 
} 

당신은 단순히 같은 스크립트 파일 이름을 얻기 위해 (내가 자주 사용) 함수를 만들 수 있습니다 비교보다

function script_name() { 
    return basename($_SERVER['PHP_SELF']); 
} 

이제 다음과 같은 것을 사용할 수 있습니다.

(script_name() == 'index.php') ? '' : ''; 

내가 활성 페이지에서 echo이를 사용하는 경우

나는 종종 지금 당신은 단순히 당신이 사용을 고집하는 경우

<a href="index.php" <?php echo is_active('index.php'); ?>> 
+1

나는 이것이 더 우아한 방법이라고 생각한다 : – Sikian

+0

왜 부정 투표? –

+1

당신은 부정적인 투표를 했습니까? 젠장, 이건 정말 멋진 해결책이야! 나는이 솔루션들이 사용되는 솔루션이어야하므로 당신을 업 그레 이드 할 것이다. – Sikian

2

: 같은 ULD 뭔가.

는 다음과 같은 코드를 시도 할 수 있습니다 :

($currentpage == '/adver.php' || $currentpage == 'editad.php') ? 'active' : '' 

는 삼항 연산자의 구문은 다음과 같은 것을 기억

(comparison) ? (if true) : (if false) 

따라서, 전체 비교가 처음에 가야한다. 어쨌든 삼자 연산자가 작가와 독자 모두에게 혼란을 줄 수 있으므로 (가능하다면이 경우 else를 필요로하지 않습니다.) 가능한 한 정상적인 if/else를 사용하는 것을 고려하십시오.

편집 : Mr. Alien의 솔루션을 사용하는 것이 좋습니다.

+0

내가 제안한 삼원 PHP 코드를 사용할 때 출력되는 것은 "활성"입니다. 일반 텍스트로 작성된 "활성". HTML 코드가 비활성화됩니다. – oliverbj

+0

에코를 사용해 보셨습니까? – Sikian

0

당신 대신 원을 남용하지 마십시오

" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '') . " 
1
if($currentpage == "adver.php" || $currentpage == "editad.php") { 
    echo "Active"; 
}