php三元运算符说明

php三元运算符说明,php,Php,我很困惑。我在index.php中设置了以下代码,以便在xampp和服务器数据库配置文件之间自动切换: define('ENVIRONMENT', isset($_SERVER['SERVER_NAME'])=='my_domain_name.com' ? 'production' : 'development'); echo 'SERVER_NAME '.$_SERVER['SERVER_NAME']; // getting localhost echo 'env '.EN

我很困惑。我在index.php中设置了以下代码,以便在xampp和服务器数据库配置文件之间自动切换:

define('ENVIRONMENT', isset($_SERVER['SERVER_NAME'])=='my_domain_name.com' ? 'production' : 'development');

    echo 'SERVER_NAME  '.$_SERVER['SERVER_NAME']; // getting localhost
    echo 'env '.ENVIRONMENT; // getting production.
在Xampp Local中,我认为这将导致环境常量设置为'development',其中$\u SERVER['SERVER\u NAME']=localhost。有人能解释一下我做错了什么吗

define('ENVIRONMENT', isset($_SERVER['SERVER_NAME'])=='my_domain_name.com' ? 'production' : 'development');
在这里,您将把
isset()
的结果与
'my\u domain\u name.com'
进行比较;您正在将布尔值与字符串进行比较

您要检查的是“是否设置了
$\u服务器['SERVER\u NAME']
,并且
$\u服务器['SERVER\u NAME']
是否等于
my\u domain\u NAME.com
?”,如下所示:

define('ENVIRONMENT', (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'my_domain_name.com') ? 'production' : 'development');
(或者……只需完全删除
isset()

在这里,您将把
isset()
的结果与
'my\u domain\u name.com'
进行比较;您正在将布尔值与字符串进行比较

您要检查的是“是否设置了
$\u服务器['SERVER\u NAME']
,并且
$\u服务器['SERVER\u NAME']
是否等于
my\u domain\u NAME.com
?”,如下所示:

define('ENVIRONMENT', (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'my_domain_name.com') ? 'production' : 'development');

(或者……只需完全删除
isset()

在这种情况下,您不需要使用
isset
(您知道它已经设置好了):


在这种情况下,您不需要使用
isset
(您知道它已经设置好了):

试试这个:

define('ENVIRONMENT', ((isset($_SERVER['SERVER_NAME']) && ($_SERVER['SERVER_NAME']=='my_domain_name.com')) ? 'production' : 'development'));
试试这个:

define('ENVIRONMENT', ((isset($_SERVER['SERVER_NAME']) && ($_SERVER['SERVER_NAME']=='my_domain_name.com')) ? 'production' : 'development'));

绝对不应该在这里使用
isset
,因为它的缺失应该被记录。为什么
$\u SERVER['SERVER\u NAME']
周围的paren?绝对不应该在这里使用
isset
,因为它的缺失应该被记录。为什么
$\u SERVER['SERVER\u NAME']
周围的paren?这基本上是我的答案,此外,为了更好的可读性,还将比较结果括在括号中(我认为这就是为什么OP对它视而不见的原因)。但是删除
isset()
可以避免这种情况。@TimPost同意;总的来说,我对我的括号非常非常挑剔,我确实认为这是可读性问题的结果。事实上,我打算在我的帖子《好的呼吁》中添加这些段落。这基本上是我的答案,同时为了更好的可读性(我想这就是为什么OP对它视而不见的原因)。但是删除
isset()
可以避免这种情况。@TimPost同意;总的来说,我对我的括号非常非常挑剔,我确实认为这是可读性问题的结果。我真的要把这些帕伦加入到我的帖子里,祝你好运。