PHP将2个表单变量组合为一个

PHP将2个表单变量组合为一个,php,Php,我有两个变量需要合并成一个变量。每个变量有两组条件。我似乎不能理解正确的语法。我正在尝试使用| | as或,但出现语法错误 $JobType = ($RepairType==17) && isset($_POST['Tankless']) && ($_POST['Tankless'] !=1 ) ? 63 : $RepairType; $JobType = ($RepairType==17) && isset($_POST['GasWaterHea

我有两个变量需要合并成一个变量。每个变量有两组条件。我似乎不能理解正确的语法。我正在尝试使用| | as或,但出现语法错误

$JobType = ($RepairType==17) && isset($_POST['Tankless']) && ($_POST['Tankless'] !=1 ) ? 63 : $RepairType;
$JobType = ($RepairType==17) && isset($_POST['GasWaterHeater']) && ($_POST['GasWaterHeater'] !=1 ) ? 60 : $RepairType;
我试过:

$JobType = ($RepairType==17) && isset($_POST['Tankless']) && ($_POST['Tankless'] !=1 ) ? 63 || ($RepairType==17) && isset($_POST['GasWaterHeater']) && ($_POST['GasWaterHeater'] !=1 ) ? 60 : $RepairType;
这也意味着将| |和|之间的条件“包装”在一起,也没有运气:

$JobType = (($RepairType==17) && isset($_POST['Tankless']) && ($_POST['Tankless'] !=1 ) ? 63) || (($RepairType==17) && isset($_POST['GasWaterHeater']) && ($_POST['GasWaterHeater'] !=1 ) ? 60) : $RepairType;

我做错了什么?

您可能在寻找:

$JobType = ($RepairType==17) ? (
    (isset($_POST['Tankless']) && ($_POST['Tankless'] !=1)) ? 63 : (
        (isset($_POST['GasWaterHeater']) && ($_POST['GasWaterHeater'] !=1)) ? 60 : $RepairType
    )
) : $RepairType;
为了简化阅读,你可以这样写:

$tankless = isset($_POST['Tankless']) && ($_POST['Tankless'] !=1 );
$gasheater = isset($_POST['GasWaterHeater']) && ($_POST['GasWaterHeater'] !=1 );

$JobType = ($RepairType==17) ? ($tankless ? 63 : ($gasheater ? 60 : $RepairType)) : $RepairType;

试试经典的if,看看你得到了什么……是的,停止在如此复杂的条件下使用三元表达式。三元运算符的极限应该是“cond?true\u value:false\u value”。除此之外的任何东西,代码只会让你的眼睛受伤。计算机没有眼睛,这不是一个复杂的情况。坏:-(“建议避免“堆叠”三元表达式。在一条语句中使用多个三元运算符时,PHP的行为是不明显的”@miken32好吧,当在正确的位置使用括号时就不是了。不相关,但有些括号在这里没有任何作用(例如大约
$\u POST['Tankless']!=1
$RepairType==17
)。