php isset减去两个变量

时间:2014-07-10 08:48:12

标签: php isset

上午,

我对PHP比较陌生,我在使用这一系列PHP时遇到了一些麻烦。我知道它会变得非常简单,我可能会错过一个字符,但我只是不理解代码的布局,所以它不起作用。

<td><?=isset($aActivity['sales'][$aNegtiator['nname']]['count'])
-isset($aActivity['cancellations'][$aNegtiator['nname']]['count'])

?$aActivity['sales'][$aNegtiator['nname']]['count']
-$aActivity['sales'][$aNegtiator['nname']]['count']:'0'?></td>

所以我的销售数据计算了一个人做了多少,并将这个取消了同一个人已取消的数量,但它没有用。

提前致谢

3 个答案:

答案 0 :(得分:2)

您正在减去两个isset操作的结果。 isset会返回truefalse。在减法中,true被视为1false被视为0。如果两个值均为true,则结果将为0,在false条件下视为?:。如果只有一个值为true,则结果为1-1,两者均为true。如果两个值均为false,则结果为0 / false

我猜你想要&&而不是-

isset($a) && isset($b) ? $a - $b : 0

顺便提一下,这可以简化为:

isset($a, $b) ? $a - $b : 0

答案 1 :(得分:0)

那段代码是什么?短标签应该用于显示值而不是创建复杂的语句。你应该使用这样的代码

<td><?php


if (isset($aActivity['sales'][$aNegtiator['nname']]['count']) && isset($aActivity['cancellations'][$aNegtiator['nname']]['count'])) {
  echo $aActivity['sales'][$aNegtiator['nname']]['count'] -$aActivity['sales'][$aNegtiator['nname']]['count']
}
else {
   echo '0'
}?></td>

您的代码的主要问题是减去2 isset。即使两者都设置了,你也会得到1-1给你0,所以你应该使用上面的代码并使用'&amp;&amp;'而不是运营商。

如果您不想将复杂的PHP代码与显示混合(什么是最佳选项),您应该这样做:

<?php

$toDisplay = 0;
    if (isset($aActivity['sales'][$aNegtiator['nname']]['count']) && isset($aActivity['cancellations'][$aNegtiator['nname']]['count'])) {
      $toDisplay = $aActivity['sales'][$aNegtiator['nname']]['count'] -$aActivity['sales'][$aNegtiator['nname']]['count']
    }
?>

稍后在您的代码中(您要显示值的位置):

<td><?= $toDisplay; ?></td>

答案 2 :(得分:0)

首先为什么要减去两者的集合。如果两者都有一些值,那么

isset($aActivity['sales'][$aNegtiator['nname']]['count'])-isset($aActivity['cancellations'][$aNegtiator['nname']]['count'])

将返回0

此外,如果满足条件,您想要回显的结果将始终为0

$aActivity['sales'][$aNegtiator['nname']]['count']-$aActivity['sales'][$aNegtiator['nname']]['count']

两个变量都相同

同时检查php.ini文件中是否启用了短标签