duanpuluan0480 2012-11-29 19:37
浏览 11
已采纳

php三元运算符解释

I am confused. I had set up the following code in my index.php to auto switch between xampp and server database config files:

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.

In Xampp locally, I thought this would result in the ENVIRONMENT constant set to 'development' with $_SERVER['SERVER_NAME']=localhost. Would someone mind explaining what I'm doing wrong here?

  • 写回答

3条回答 默认 最新

  • doukui7574 2012-11-29 19:39
    关注
    define('ENVIRONMENT', isset($_SERVER['SERVER_NAME'])=='my_domain_name.com' ? 'production' : 'development');
    

    Here you're comparing the result of isset() to 'my_domain_name.com'; you're comparing a boolean to a string.

    What you want is to check "is $_SERVER['SERVER_NAME'] set AND is $_SERVER['SERVER_NAME'] equal to my_domain_name.com?", as follows:

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

    (Or... just remove the isset() entirely.)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部