上午,
我对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>
所以我的销售数据计算了一个人做了多少,并将这个取消了同一个人已取消的数量,但它没有用。
提前致谢
答案 0 :(得分:2)
您正在减去两个isset
操作的结果。 isset
会返回true
或false
。在减法中,true
被视为1
,false
被视为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文件中是否启用了短标签