我有两个类似的功能,一个输出改变,另一个不改变;t


I have two similar functions while one output changes and the other doesn't

此代码使用html、php和laravel。无论我做什么,第一个"tk"的值都不会改变。第二个"ntk"的值确实会改变,但最终我在网页上的输出会出于某种原因让我选中复选框。真的希望有人能帮我,因为我真的不知道这怎么可能。尤其是当我在$ntk中输入false时,复选框会保持未选中状态。

这是我的表格:

<?php
        $tk = Session::has('tk') ? Session::get('tk') : 1;
        var_dump($tk);
        if($tk == 1){
            $tk = 'true';
        } else {
            $tk = 'false';
        }
        $tk_name = 'tk: ';
        var_dump($tk_name);
        var_dump($tk);
        $ntk = Session::has('ntk') ? Session::get('ntk') : 0;
        var_dump($ntk);
        if($ntk == 1){
            $ntk = 'true';
        } else {
            $ntk = 'false';
        }
        $ntk_name = 'ntk: ';
        var_dump($ntk_name);
        var_dump($ntk);
    ?>
    {{ Form::open(array('url' => 'aanvullen')) }}
        <table>
            <tr>
                <td>
                    {{ Form::submit('Toepassen') }}
                </td>
                <td>
                    {{ Form::checkbox('tk', 1, $tk) }} Tijdkritisch (TK) <br>
                    {{ Form::checkbox('ntk', 1, $ntk) }} Niet-tijdkritisch (NTK)
                <td>
            </tr>
        </table>
    {{ Form::close() }}

这是我的控制器代码:

if(isset($_POST['tk']) )
    {
        $tk = $_POST['tk'];
        Session::put('tk', $tk);
    } else {
        $tk = 1;
        Session::put('tk', $tk);
    }
    if(isset($_POST['ntk']) )
    {
        $ntk = $_POST['ntk'];
        Session::put('ntk', $ntk);
    } else {
        $ntk = 0;
        Session::put('ntk', $ntk);
    }

您使用的是:

if($tk == 1){
    $tk = 'true';
} else {
    $tk = 'false';
}

在这种情况下,$tk总是真的,因为trueString,而不是Boolean值;当您使用$tk作为Boolean值时,它会变成true,因为它是truthy值,例如:

$tk = 'false';
echo !!$tk; // 1 = true

无论如何,这就是问题所在,您的$tk包含一个字符串而不是Boolean,分配Boolean值的正确方法是:

$k = TRUE; / without qoutes

但您不必像这样将TRUEFALSE分配给$tk

enter code hereif($tk == 1){
    $tk = true;
} else {
    $tk = false;
}

由于0falsy的值,计算结果为FALSE1的值计算结果为TRUE,因此您可以直接使用$tk,如下所示:

{{ Form::checkbox('tk', 1, $tk) }}

根据$tk的值(10),它可以是:

{{ Form::checkbox('tk', 1, 1) }} // Checked
{{ Form::checkbox('tk', 1, 0) }} // Unchecked

因此,如果$tk包含1,则checkbox将是checked,而如果0,则它将不是checked