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;
我有很多这样的内联 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;