不使用临时变量的测试条件


Test condition without using temporary variables

如何写这个,以便不需要临时变量$x1$x2

$x1=isset($_POST['x'])?$_POST['x']:(isset($_GET['x'])?$_GET['x']:null);
$x2=isset($_SESSION['x'])?$_SESSION['x']:null;
if(!$x1 || $x1!=$x2) {}

例如,我可以执行以下操作,但是,期望它可以减少。

if(
  !isset($_POST['x'])?$_POST['x']:(isset($_GET['x'])?$_GET['x']:null)
  || isset($_POST['x'])?$_POST['x']:(isset($_GET['x'])?$_GET['x']:null)!=isset($_SESSION['x'])?$_SESSION['x']:null
) {}

您可以使用_REQUEST代替$_POST$_GET

if(!isset($_REQUEST['x']) || $_REQUEST['x'] != $_SESSION['x']) {}

你是说:

$x1=isset($_POST['x'])?$_POST['x']:(isset($_GET['x'])?$_GET['x']:null); 
$x2=isset($_SESSION['x'])?$_SESSION['x']:null;
if(!$x1 || $x1!=$x2) {}

这等于说:

如果(不是 post-x 有值或 get-x 没有值或会话 x 没有值)

这将与以下相同:

 if (!isset($_POST['x']) || !isset($_GET['x'] || !isset($_SESSION['x']))