2017-05-17 1 views
-2

정의되지 않은 : 어쩌면 $altnav 요구 PHP : 삼항 연산자는 내부 문을 포함, 변수 내가 include 문 내부 삼항 연산자와 변수를 확인하고 있지만, 변수가 정의된다

<?php include('../partials/' . isset($altnav) ? $altnav . '.php' : '_nav.php'); ?> 

가 반향을? 그러나 include 문에서 수행 할 수 있다고 생각하지 않습니다. 이 작업의

<?php $pathpart = isset($altnav) ? $altnav . '.php' : '_nav.php'; 
include('../partials/' . $pathpart); ?> 

답변

2

주문을? : 같은

나는 새 변수를 생성하고 두 줄을 사용해야합니다. 괄호 안에 삼항 작업을 동봉 : 괄호없이

include('../partials/'.(isset($altnav) ? $altnav.'.php' : '_nav.php')); 

는, 그것은을 확인하기 전에는 isset ($의 altnav)의 결과에 '../partials/'를 ​​연결합니다? 삼항 연산자.

1

다른 답변과 같이 연산자 우선 순위로 인해 코드가 예상 한대로 작동하지 않았지만 간결성을 위해 3 항 연산자를 사용한다고 가정 할 때 여기에는 몇 가지 다른 점이 있습니다.

  1. 외부 괄호를 생략 할 수 있습니다. include은 기능이 아니므로 필요하지 않습니다.

  2. 이 경우 삼항 연산자를 사용할 필요가 없습니다. This is the purpose of the null coalescing operator that was added in PHP 7.

    include '../partials/' . ($altnav ?? '_nav') . '.php'; 
    
+0

큰 물건, 감사합니다! – Galivan