使用以下代码,我收到错误"Undefined Index: area"
<select id="area" name="area" class="selectbox dropdownfilter" data-target-id="location">
<option value="">all areas</option>
<?php asort($areas) ?>
<?php foreach ($areas as $code =>$area) : ?>
<option value="<?php echo $code ?>"<?php if(isset($_SESSION['area']) | isset($_POST['area'])) { if($_SESSION['area'] == $area | $_POST['area'] == $area) { echo ' selected'; } } ?> ><?php echo $area ?></option>
<?php endforeach ?>
</select>
正确输出$area
,错误出现在'selected'脚本中。关于我做错了什么,或者我怎么能做到这一点,我都输了。我只是想选择该选项,如果它是在搜索表单中提交的内容。
答案 0 :(得分:1)
错误“Undefined Index:area”表示 $ _ POST ['area'] 或 $ _ SESSION ['area']确实已设置....但另一个不是......
使用它:
if((isset($_SESSION['area']) && $_SESSION['area'] == $area) || (isset($_POST['area']) && $_POST['area'] == $area)) {echo ' selected';}
或者像这样:
if(@$_SESSION['area'] == $area || @$_POST['area'] == $area) {echo ' selected';}
答案 1 :(得分:1)
那个条件:
if(isset($_SESSION['area']) | isset($_POST['area'])) {
=&GT;如果设置了$_SESSION['area']
或者设置了$_POST['area']
,则返回true
因此,如果未设置$_SESSION['area']
但设置了$_POST['area']
,则确实如此。
然后:
if($_SESSION['area'] == $area | $_POST['area'] == $area) {
=&GT;您正在测试$_SESSION['area']
值。如果未设置(可能如前所述),您将收到错误通知。
这是我要做的,只有一个条件:
if (
(isset($_SESSION['area']) && $_SESSION['area'] == $area)
||
(isset($_POST['area']) && $_POST['area'] == $area)
) {
如果未设置$_SESSION['area']
,则PHP无法测试$_SESSION['area'] == $area
是否因为它不需要(因为第一个条件是假的),它会尝试OR
见http://php.net/manual/en/language.operators.logical.php
并http://php.net/manual/en/language.operators.precedence.php