2013-10-16 35 views
1

所以我有一个数组工作正常,但在下面的代码中,我想添加一个语句检查$ result ['price'] =!分割前的NULL。 我在我的阵列,其具有值0.00的几个项目,所以我想不是零:)正确的方式来组装如果语句在数组中

'stock_status'=> $result['stock_status'], 
'saving'  => round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0), 
'tax'   => $tax, 

我试过以下的一些组合来划分:

'stock_status'=> $result['stock_status'], 
'saving'  => if (!($result['price'] == NULL)) { 
round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0), 
    } 
'tax'   => $tax, 

但没有成功,我做错了什么?

+0

仅供参考:除以零在PHP中只给出一个警告,它不会让你的脚本停下来。 – hakre

+0

@hakre也许你是对的,但我的CSS在ie9中遇到了问题:) 感谢您的所有答案,自从第一次尝试工作正常以来,我没有得到测试每一段代码。 我从这个有点微不足道的帖子中学到了很多东西,惊人的有多少种解决方案 –

回答

2

我使用数组之外,

$saving = (! isset($result['price']))?round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0):$result['price']; 

然后只写

'saving'  => $saving, 
+0

+1:接下来为变量指定一个明确的名称,如果完成得很好,这也有利于更好地在单行上格式化多行。 – hakre

0

NULL意味着像不存在,空

您要检查0:

'saving'  => if (!($result['price'] > 0)) { 

除此之外,设置它的时候,它始终是一个好主意,先创建工作脚本基本步骤:

$value = 0; 
if (!($result['price'] > 0)) 
    { 
    $value = round(100*(($result['price'] - $result['special']) /$result['price'] + 0.01) , 0) 
    } 

之后您可以输入$值到数组中。然后,您可以始终使用三元运算符开始合并。但我不理解的是,需要(但我没有沉重的服务器负载操心)

+0

你确定?大多数编程语言的差异很大 –

4

你可以使用一个三元操作符:

[bool] ? if_true : if_false 

'saving' => is_null($result['price']) ? 0 : round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0); 
+0

如果$ result ['price']的值为0,那该怎么办? – david

+0

你会得到一个除0的错误。您可以调整布尔条件以满足您的需求。 – Halcyon

+0

但你的代码只检查'is_null($ result ['price'])''。所以,我认为如果这些值是0,那么执行另一个。 – david

0
'stock_status'=> $result['stock_status'], 
'saving'  => if (!$result['price'] == NULL || !$result['price'] == 0) { 
    round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0), 
} 
'tax'   => $tax, 
0

我认为你的错误可能在这里:

'saving' => if (!($result['price'] == NULL)) { 
    round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0), 
} 

逗号不是它应该是,在} 后正确的片段:

'saving' => if (!($result['price'] == NULL)) { 
    round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0) 
}, 
+0

这无助于解决问题。你的代码只检查'$ result ['price']'值是否为NULL。不检查零值 – david

+0

它有助于解决我认为是他所遇到的问题的语法错误。 – Theolodis

0
'stock_status'=> $result['stock_status'], 
'saving'  => $result['price']? round((($result['price'] - $result['special'])/$result['price'] + 0.01)*100, 0):0, 
'tax'   => $tax, 

会的工作,如果价格是NULL或零值