PHP:混淆if else语句 - 相同的逻辑或错误的理解?

时间:2018-01-21 18:40:47

标签: php if-statement logic

我真的很困惑,因为我有一个if / else语句在系统的第一次集成时有效,但在第二种情况下我必须重写该函数。我的观点是,两种陈述都有相同的逻辑吗?或者不是吗?

声明1:在第一次集成代码时按预期工作,但在第二次集成时不起作用(变量ba_geschaeftszeichen的字符串长度始终为零):

if (
  (isset($_POST['ba_geschaeftszeichen']) && ($kostentraeger == "sozialamt")) ||
  (isset($_POST['pk_vnr']) && ($kostentraeger == "pflegekasse"))
) {
  if (isset($_POST['ba_geschaeftszeichen']) && (strlen($_POST['ba_geschaeftszeichen']) > 0)) {
    $ba_geschaeftszeichen = $_POST['ba_geschaeftszeichen'];
  } else if (isset($_POST['pk_vnr']) && (strlen($_POST['pk_vnr']) > 0)) {
    $ba_geschaeftszeichen = $_POST['pk_vnr'];
  } else {
    $ba_geschaeftszeichen = "";
  }
} else { $ba_geschaeftszeichen = ""; }

声明2:只有此代码适用于第二次集成:

if (
  (isset($_POST['ba_geschaeftszeichen']) && ($kostentraeger == "sozialamt")) ||
  (isset($_POST['pk_vnr']) && ($kostentraeger == "pflegekasse"))
) {
  if (isset($_POST['ba_geschaeftszeichen']) && (strlen($_POST['ba_geschaeftszeichen']) > 0)) {
    $ba_geschaeftszeichen = $_POST['ba_geschaeftszeichen'];
  } else {
    $ba_geschaeftszeichen = "";
  }
  if (isset($_POST['pk_vnr']) && (strlen($_POST['pk_vnr']) > 0)) {
    $ba_geschaeftszeichen = $_POST['pk_vnr'];
  } else {
    $ba_geschaeftszeichen = "";
  }
} else { $ba_geschaeftszeichen = ""; }

1 个答案:

答案 0 :(得分:1)

在声明1中,您达到了     if(isset($ _ POST [' pk_vnr'])&&(strlen($ _ POST [' pk_vnr'])> 0))

仅限

if (isset($_POST['ba_geschaeftszeichen']) && (strlen($_POST['ba_geschaeftszeichen']) > 0))

是假的。

在声明2中,您到达

if (isset($_POST['pk_vnr']) && (strlen($_POST['pk_vnr']) > 0))

无论。