未定义的索引&为foreach()提供的参数无效

时间:2013-02-19 18:17:32

标签: php

如果从下面的代码中没有选中任何复选框,我正在努力生成输出。

HTML - 表格

<label>Item 1:</label><input type="checkbox" name="selected[]" value="Item 1"/>
<label>Item 2:</label><input type="checkbox" name="selected[]" value="Item 2"/>
<label>Item 3:</label><input type="checkbox" name="selected[]" value="Item 3"/>

PHP代码

<?php
foreach ($_REQUEST['selected'] as $key => $selected) {
echo "$selected";           
}         
?>

代码在选中时输出正确的值,但会生成“未定义的索引:在...中选择”和“ “为foreach()提供的参数无效:”

有人能指出我正确的方向吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您需要在使用之前检查该值:

<?php
//$_REQUEST['selected'] is set and is array
if(isset($_REQUEST['selected']) && is_array($_REQUEST['selected'])){
    //Loop it
    foreach ($_REQUEST['selected'] as $key=>$selected) {
        echo htmlspecialchars($selected);
    }
}
?>

Undefined index: extra可能是其他错误,但您认为是这样。如果您看到Undefined index警告意味着您尝试访问未定义的数组键,例如未设置,则可以采用任何方式。

仅供参考:请注意$_REQUEST将接受来自$ _GET和$ _POST,如果您不希望从任何一个设置该值,那么最好更具体,因此如果您在表单中使用POST然后使用$_POST['selected']