【问题标题】:why is unset array value acting unexpected?为什么未设置的数组值会出乎意料?
【发布时间】:2014-05-27 08:09:04
【问题描述】:

我从我的数据库返回一个数组,然后想通过 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

为什么会这样

如果(标准速率 == 25.00)

不工作?

【问题讨论】:

    标签: php arrays unset


    【解决方案1】:

    如果显示错误,您会看到“未定义的常量 standard_rate,假设为 'standard_rate'”。一个字符串。显然,"standard_rate" == 25.00 是错误的。

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

    【讨论】:

    • 你是对的。起初这并没有改变任何东西,所以事实证明我的数组实际上并不是它应该的样子。现在我又回到正轨了,谢谢。
    【解决方案2】:

    应该是:

    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 &lt;= 25.00) 会起作用,因为 0 小于 25(数值比较)。

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 2011-11-24
      • 2014-05-30
      • 2022-08-02
      • 2014-04-02
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多