PHP 如果条件为字符串“0”时不起作用,则内联

PHP inline if not working when condition is string "0"

我有很多这样的内联 if 只有这个 不工作:

$border = $settings[$key]['border'] ? 'border-width:'.$settings[$key]['border'].'px;' : null;

$settings[$key]['border']"0"gettype($settings[$key]['border']) return string.

我尝试通过在 $settings[$key]['border'] 之前添加 (string) 再次将 "0" 转换为字符串。

    public static function GenerateStylesFromSettings($key, $settings){

            $bg         =   $settings[$key]["background"]           ? 'background-color:'.$settings[$key]["background"].';'     : null;
            $pl         =   $settings[$key]["position"]['left']     ? 'left:'.$settings[$key]["position"]['left'].'%;'          : null;
            $pt         =   $settings[$key]["position"]['top']      ? 'top:'.$settings[$key]["position"]['top'].'%;'            : null;
            $c          =   $settings[$key]['font']["color"]        ? 'color:'.$settings[$key]['font']["color"].';'             : null;
            $f          =   $settings[$key]['font']["family"]       ? 'font-family:"'.$settings[$key]['font']["family"].'";'    : null;
            $s          =   $settings[$key]['font']["size"]         ? 'font-size:'.$settings[$key]['font']["size"].'mm;'        : null;
            $width      =   $settings[$key]['width']                ? 'width:'.$settings[$key]['width'].'mm;'                   : null;
            $height     =   $settings[$key]['height']               ? 'height:'.$settings[$key]['height'].'mm;'                 : null;
            $linehe     =   $settings[$key]['height']               ? 'line-height:'.($settings[$key]['height']-1.5).'mm;'      : null;
            $border     =   (string) $settings[$key]['border']              ? 'border-width:'.$settings[$key]['border'].'px;'           : null;
            $borderc    =   $settings[$key]['border_color']         ? 'border-color:'.$settings[$key]['border_color'].';'       : null;
            $borders    =   $settings[$key]['border_style']         ? 'border-style:'.$settings[$key]['border_style'].';'       : null;
            $visibility =   $settings[$key]['visibility']           ? 'visibility:'.$settings[$key]['visibility'].';'           : null;

            $css        =   ($bg)                                   ? $bg                                                       : null;
            $css        .=  ($pl)                                   ? $pl                                                       : null;
            $css        .=  ($pt)                                   ? $pt                                                       : null;
            $css        .=  ($c)                                    ? $c                                                        : null;
            $css        .=  ($f)                                    ? $f                                                        : null;
            $css        .=  ($s)                                    ? $s                                                        : null;
            $css        .=  ($width)                                ? $width                                                    : null;
            $css        .=  ($height)                               ? $height                                                   : null;
            $css        .=  ($linehe)                               ? $linehe                                                   : null;
            $css        .=  ($border)                               ? $border                                                   : null;
            $css        .=  ($borderc)                              ? $borderc                                                  : null;
            $css        .=  ($borders)                              ? $borders                                                  : null;
            $css        .=  ($visibility)                           ? $visibility                                               : null;

            $styles     =   ($css) ? 'style=\''.$css.'\'' : null;

            return $styles;

}

不工作。 编辑:我需要将内联 if 设为 true 以生成 border-width: 0px.

由于字符串 '0' 在 php 中被认为是 false,您应该使用另一个比较,例如:

null !== $settings[$key]['border'] ? 'value' : null;
// if value is always a string - compare with empty string
'' !==  $settings[$key]['border'] ? 'value' : null;