codeigniter 致命错误:不能对表达式的结果使用isset()(可以使用“null!== expression”instead)in php

r3i60tvu  于 2023-05-20  发布在  PHP
关注(0)|答案(5)|浏览(171)
<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>
q8l4jmvw

q8l4jmvw1#

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

<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,如果键被设置并且值不为空。你要做的是检查返回的值是否等于某个字符串。我的方法是,首先检查值是否存在,然后检查值是否相等。

vngu2lb8

vngu2lb82#

因为,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>
x33g5p2x

x33g5p2x3#

<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"; }
e0uiprwp

e0uiprwp4#

在这种情况下使用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>

你不需要在12个月内重复密码。
如果您使用的是Laravel,请使用Blade语法;或者对于ifforeach,请使用PHP自己的alternative syntax

6yt4nkrj

6yt4nkrj5#

使用这个:

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

相关问题