2017-05-17 65 views
-2

我檢查的包括語句中使用三元運算符的變量,但是變量是不確定的:PHP:三元運算符中包含語句,變量未定義

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

也許$altnav需求相呼應?但我認爲這不能在包含聲明中完成。

我必須創建一個新的變量,並使用兩行這樣?:操作

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

回答

2

訂單。附上三元操作中括號:

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

如果沒有括號,它檢查前串接「../partials/」到isset($ altnav)的結果?三元運算符。

1

由於運算符優先級,您的代碼沒有達到您的預期效果,如其他答案中所示,但假設您使用三元運算符以簡化操作,以下是其他幾個要點。

  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