Php 使用isset获取未定义的变量

Php 使用isset获取未定义的变量,php,forms,Php,Forms,使用下面的代码,我得到了错误“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

使用下面的代码,我得到了错误
“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>

所有区域
错误“Undefined Index:area”意味着$\u POST['area']或$\u 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';}
该条件:

if(isset($_SESSION['area']) | isset($_POST['area'])) {
=>如果设置了
$\u SESSION['area']
或设置了
$\u POST['area']
,则返回true
因此,如果未设置
$\u SESSION['area']
,但设置了
$\u POST['area']
,则为真

然后:

    if($_SESSION['area'] == $area | $_POST['area'] == $area) {
=>您正在测试
$\u会话['area']
值。如果未设置(如前所示,这是可能的),您将收到错误通知

以下是我要做的,只有一个条件:

if (
    (isset($_SESSION['area']) && $_SESSION['area'] == $area)
    ||
    (isset($_POST['area']) && $_POST['area'] == $area)
) {
如果未设置
$\u SESSION['area']
,PHP将不会费心测试
$\u SESSION['area']==$area
,因为它不需要(因为第一个条件无论如何都是false),它将尝试
之后的内容



很好的可能的副本,谢谢。逻辑不是我的强项。在混合物中加入Ors没有帮助!干杯只接受了另一个答案,因为有更多的解释,但我正在使用您的脚本…这给了我一个错误:“致命错误:无法对表达式的结果使用isset()(您可以改为使用“null!==expression”)。这不应该发生,因为两个代码都在工作。在我更正错误之前,您可能有旧版本。。。。请再试一次…因为怀疑我的代码有问题$_POST['area']实际上与$code匹配,而不是$area。