为什么未设置的数组值意外?

时间:2014-04-13 11:03:30

标签: php arrays unset

从我的db我返回一个数组,然后想要通过unset清理这个数组: 我返回的数组如下所示:

Array ( [standard_rate] => 25.00 [reduced_rate] => 20.00 [super_reduced_rate] => 15.00 [zero] => 0.00 [other] => 0.00 ) 

如果standard_rate = 25,我想得到没有standard_rate的数组,所以我这样做:

if(standard_rate == 25.00 ) unset($return[standard_rate]);

这不起作用,或

if(standard_rate == '25.00' ) unset($return[standard_rate]);

这不起作用。但是,当我这样做时:

    if(standard_rate <= 25.00 ) unset($return[standard_rate]);

它有效。 我也尝试过:

if(zero== 0 ) unset($return[zero]);

也可以。 我的数据库中standard_rate的值是double(11,2)类型,值为25.00

为什么会这样?

  

if(standard_rate == 25.00)

无效?

2 个答案:

答案 0 :(得分:2)

如果您显示错误,您会看到&#34; undefined constant standard_rate,假设为'standard_rate'&#34;。一个字符串。显然,"standard_rate" == 25.00是错误的。

if( $return['standard_rate'] == 25) unset($return['standard_rate']);

答案 1 :(得分:1)

应该是:

if($return["standard_rate"] == 25) unset($return["standard_rate"]);

现在让我们看看您的代码有什么问题。

standard_rate是一个未定义的常量,其数值0和假定的字符串值"standard_rate",所以......

if(standard_rate == 25.00) 无法使用,因为0不等于25(数字比较)。

if(standard_rate == '25.00') 无效,因为字符串"standard_rate""25.00"不相等(字符串比较)。

if(standard_rate <= 25.00) 将起作用,因为0小于25(数字比较)。