我正在尝试根据if条件运行一段代码。我不承认为什么一个条件返回false而另一个条件返回true,它们似乎正在检查完全相同的东西。如果有人可以提供帮助并说明为什么使用“isset”会更改返回的值。
if(isset($_SESSION['parent_id'])!= '' && '
isset($_SESSION['p_email'])!= '' &&
isset($_SESSION['child_id']) ||
isset($_SESSION['agency_id'])!= '' &&
isset($_SESSION['a_email'])!= '' &&
isset($_GET['child_id']) !='' ||
isset($_SESSION['admin_id'])!= '' &&
isset($_SESSION['admin_email'])!= '' && isset($_GET['child_id']) !=='' )
上方返回true,这是正确的值。
if( ($_SESSION['parent_id'])!= '' &&
($_SESSION['p_email'])!= '' &&
($_SESSION['child_id']) ||
($_SESSION['agency_id'])!= '' &&
($_SESSION['a_email'])!= '' &&
($_GET['child_id']) !='' ||
($_SESSION['admin_id'])!= '' &&
($_SESSION['admin_email'])!= '' &&
($_GET['child_id']) !=='' )
上面的 代码返回false,这是错误的返回值。
答案 0 :(得分:3)
如果你有这么复杂的情况,你需要重新考虑这个问题。首先,我会将代码拆分为更易读的部分。我只能猜到你试图做什么,但似乎你想要这样的东西:
$caseWithParentId = isset($_SESSION['parent_id']) &&
isset($_SESSION['p_email']) &&
isset($_SESSION['child_id']);
$caseWithAgencyId = isset($_SESSION['agency_id']) &&
isset($_SESSION['a_email']) &&
isset($_SESSION['child_id']);
$caseWithAdminId = isset($_SESSION['admin_id']) &&
isset($_SESSION['admin_email']) &&
isset($_SESSION['child_id']);
if ($caseWithParentId || $caseWithAgencyId || $caseWithAdminId)
{
//...
}
然后我想知道你为什么最终得到相同的PHP文件,有这么多可能的组合,通常每个情况都有一个目标。