【问题标题】:Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php致命错误:无法在 php 中对表达式的结果使用 isset()(您可以改用“null !== expression”)
【发布时间】:2020-08-15 04:50:39
【问题描述】:
<select name='month'> 
    <option value="">Select Month</option> 
    <option value="january" <?php if(isset($fetch['bill_month']=="January")){ echo "selected"; }
    ?>>January</option> 

    <option value="february">February</option>
    <option value="march">March</option>
</select>

【问题讨论】:

  • 试试这个,@if(isset($fetch['bill_month'])) @if($fetch['bill_month'] == "January") selected @endif @endif
  • 永远不要使用@来抑制错误!!!!!!!!!!!!!!!!!!!!!!!!

标签: php mysql laravel codeigniter


【解决方案1】:

你在这里做了错误的比较。尝试改变:

<option value="january" <?php if(isset($fetch['bill_month']=="January")){ echo "selected"; }
    ?>>January</option>

对此:

<option value="january" <?php if(isset($fetch['bill_month']) && $fetch['bill_month'] =="January")){ echo "selected"; }
    ?>>January</option> 

或者这个短代码:

<option value="january" <?= (isset($fetch['bill_month']) && $fetch['bill_month'] =="January")) ? "selected" : "" ?>>January</option>

基本上isset($fetch['bill_month']) 返回truefalse 如果键已设置且值不为空。您尝试做的是检查返回值是否等于某个字符串。我的方式,你首先检查值是否存在,然后是否相等。

【讨论】:

    【解决方案2】:

    因为,isset() only works with variables as passing anything else will result in a parse error 所以你不能将expression 传递给它。

    这应该可行。

    <option value="January" 
    <?PHP 
    $isJan = $fetch['bill_month']=="January";
    if(isset($isJan)){ echo "selected"; }
        
    ?>
    >January</option> 
    

    【讨论】:

      【解决方案3】:
      <option value="january" <?php if(isset($fetch['bill_month']=="January")){ echo "selected"; }
      

      isset - 确定变量是否已声明且不同于 NULL。因此,条件应改为以下代码:

      <option value="january" <?php if(isset($fetch['bill_month']) && $fetch['bill_month'] =="January")){ echo "selected"; }
      

      【讨论】:

        【解决方案4】:

        在这种情况下使用isset 是不正确的。

        你宁愿这样做:

        <option value="january" <?php echo (isset($fetch['bill_month']) && $fetch['bill_month'] =="January")) ? "selected" : "" ?>>January</option>
        

        这应该可行。

        PS: 考虑到你在做什么,最好将月份放在一个数组中并循环:

        <?php
        $months = [
            'January',
            'February',
            'March',
            'April',
            'May',
            'June',
            'July',
            'August',
            'September',
            'October',
            'November',
            'December',
        ];
        ?>
        
        <select name='month'> 
            <option disabled>Select Month</option>
            <?php foreach($months as $month) { ?>
            <option value="<?php echo strtolower($month); ?>" <?php if(isset($fetch['bill_month']) && $fetch['bill_month'] == $month) { echo "selected"; }
            ?>>
                 <?php echo $month; ?>
            </option> 
            <?php } ?>
        </select>
        

        而且您无需在十二个月内重复代码。

        如果您使用的是Laravel,也请使用Blade 语法 或者使用PHP自己的alternative syntaxifforeach

        【讨论】:

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