18

次のコードがあります

define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(isset(SCRIPT_URL) && !empty(SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}

しかし、それは私に次のエラーを与えています:

Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in *(path)* on line 3

ここで何が問題なのか、またはそれを修正する方法を誰かが見ることができますか?

4

3 に答える 3

13

定数が存在するかどうかを判断しようとする場合は、defined()orを使用してみてconstant()くださいisset()


php.netから:

機能 defined():

name で指定された名前付き定数が定義されている場合は TRUE を返し、そうでない場合は FALSE を返します。

機能 constant():

定数の値を返します。定数が定義されていない場合は NULL を返します。


固定機能:

function ifScriptFolder() {
    echo defined('SCRIPT_URL') ? "/" . constant('SCRIPT_URL') . "/" : "/"
}

更新:

定数が定義されていない場合は発行されないため、defined()関数はこれに対するより良い解決策です。E_WARNING

于 2013-09-18T04:06:52.757 に答える
5

PHP定数は変数ではないため、使用しissetたりempty、チェックしたりしません。

代わりに、次を使用できますdefined

defined('SCRIPT_URL')

フィールドが定義されている場合はブール値を返し、定義されている場合は、値に対して標準的な比較を行って、それが真実かどうかを確認します。

issetこれは通常の関数ではないことにも注意してください (今後の参考のために) 。これは「言語構造」であり、変数以外には使用できません (つまり、関数の戻り値には使用できません)。emptyPHP 5.5 までは同じです。

于 2013-09-18T04:07:46.893 に答える
3

変数が存在するかどうかを確認したい場合は、 を使用しisset()defined()定数にのみ適用します。

定数が空かどうかを確認したい場合は、次を使用できません。

if (empty(B)) // syntax error
if (empty(constant('B'))) // fatal error

定数をブール値に変換できます。

if((boolean) A) {
}

したがって、コードを次のように変更できます。

<?php
define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}
于 2013-09-18T04:14:43.240 に答える