【问题标题】:Fatal error: Cannot use isset() on the result of an expression致命错误:无法对表达式的结果使用 isset()
【发布时间】:2016-12-26 17:26:21
【问题描述】:

使用isset 编码时出现致命错误。我搜索了stackoverflow,但结果并不令人满意。

我来了

致命错误:无法对表达式的结果使用 isset()(您可以改用“null !== expression”)

我的代码是

if (!isset( $size || $color )) {
    $style = '';    
}else{
    $style = 'font-size : ' . $size . ';color:' . $color;   
}

【问题讨论】:

标签: php html wordpress


【解决方案1】:

你应该这样使用

if  (!isset( $size ) || !isset( $color ))  {

【讨论】:

  • 为什么没有动机就投票......答案是正确的
【解决方案2】:

你的表达式总是返回 true 或 false => 理论上 isset 总是返回 true 所以 PHP 不允许这样做
改变

if (!isset( $size || $color )) {

if (!isset($size) || !isset($color)) {

【讨论】:

    【解决方案3】:

    如 cmets(和错误消息)中所述,您不能将表达式的结果传递给 isset

    您可以使用多个 isset 调用,或反转 if/else 块的逻辑并将多个参数传递给 isset,我认为这是最干净的解决方案:

    //true if both are set
    if(isset($size, $color)) {
        $style = 'font-size : ' . $size . ';color:' . $color;
    }else{
        $style = '';
    }
    

    您可以通过首先设置默认值来进一步清理它,从而避免需要 else 部分:

    $style = '';
    if(isset($size, $color)) {
        $style = 'font-size : ' . $size . ';color:' . $color;
    }
    

    你甚至可以使用三进制,虽然有些人觉得它们更难阅读:

    $style = isset($size, $color) ? 'font-size : ' . $size . ';color:' . $color : '';
    

    【讨论】:

      猜你喜欢
      • 2016-01-09
      • 2019-05-22
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      相关资源
      最近更新 更多