php三元运算符解释

时间:2012-11-30 03:37:53

标签: 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 '.ENVIRONMENT; // getting production.

在Xampp本地,我认为这会导致使用$ _SERVER ['SERVER_NAME'] = localhost将ENVIRONMENT常量设置为'development'。有人会介意解释我在这里做错了吗?

3 个答案:

答案 0 :(得分:3)

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

在这里,您要比较isset()'my_domain_name.com'的结果;你将布尔值与字符串进行比较。

您想要检查“ $_SERVER['SERVER_NAME']设置并且$_SERVER['SERVER_NAME']等于my_domain_name.com”,如下所示:

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

(或者......完全删除isset()。)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

试试这个:

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