将变量推入函数以检查是否存在 - PHP

时间:2013-10-28 12:03:46

标签: php

我有一个简单的表单,用户添加了一种行为。然后保存它。

然后他们可以返回并编辑它。当他们返回编辑时,我希望他们正在编辑的行为类型在表单下拉列表中显示为选中状态。

我使用一个函数来打印下拉框,并尝试将当前变量发送到函数中以检查和修改结果。希望有意义!

问题是函数

中没有看到变量$row[act_type]

无论如何,这是我调用函数的方式($ row [act_type]存在):

edit_act_types('<?=$row[act_type]?>');

然后打印我正在使用的下拉列表:

function edit_act_types($actType) {
    $mysqli = dbConnect(); // connect with db
    $query_actTypes="SELECT * FROM actTypes order by actType";
    $result_actTypes = $mysqli->query($query_actTypes);

    echo '<select class="form-control" id="type" name="type"><option value="">'.$actType.' Select...</option>';

    while($row_actType = $result_actTypes->fetch_array()){

        if($actType==$row_actType['actTypes_id']) {

            $selected = 'selected="selected"';

        }

        echo '<option value="'.$row_actType['actTypes_id'].'" '.$selected.'>'.$row_actType['actType'].'</option>';

    } 

    echo '</select>';
};

2 个答案:

答案 0 :(得分:1)

该函数在php标签中调用

<?php   
 edit_act_types($row[act_type]);
?>

所以<?=$row[act_type]?> - 无效

答案 1 :(得分:1)

您的代码中包含以下行:

edit_act_types('<?=$row[act_type]?>');

我不确定你要用上述内容实现的目标。 <?=$row[act_type]?>部分将被视为一个字符串,并作为函数参数而不是实际变量传递。调用函数时不需要使用PHP标记。

考虑以下代码:

header('Content-Type: text/plain');

function foo($bar) {
    echo $bar;
}

$var = 'hello';
foo('<?=$var?>');

output将是<?=$var?>,而不是hello

因此,您的函数调用应如下所示:

edit_act_types($row['act_type']);

阅读PHP手册中有关Functions的更多信息。