代码之家  ›  专栏  ›  技术社区  ›  The50

PHP inline if语句总是返回false

  •  0
  • The50  · 技术社区  · 6 年前

    似乎无法正常启动,知道问题出在哪里吗?变量APP_NAME等于字符串'test',如果我以常规方式执行if语句,它将正常工作。

    <?=form_radio('filter', 'y', $info['enable_categories'] == 'y' ? true : false, 'id="app" '.APP_NAME == "test" ? '' : 'disabled'.'')?>
    

    功能表\u radio具有以下参数:

    function form_radio($data = '', $value = '', $checked = FALSE, $extra = '') 因此,额外的参数必须是ID,如果值不等于'test',则还必须是“disabled”字符串。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Karsten Koop    6 年前

    当你写作的时候

    'id="app" '.APP_NAME == "test" ? '' : 'disabled'.''
    

    这个 operator precedence 使其评估为

    ('id="app" '.APP_NAME) == "test" ? '' : 'disabled'.''
    

    所以你应该在三元子句周围加括号:

    'id="app" '.(APP_NAME == "test" ? '' : 'disabled'.'')
    

    你也可以摆脱 .'' . 还有这个条款

    $info['enable_categories'] == 'y' ? true : false
    

    可以简化为

    $info['enable_categories'] == 'y'