PHP:检查是否为0?

时间:2010-05-28 13:37:44

标签: php arrays for-loop zero

我正在使用一个类,它返回excel电子表格的特定行和单元格的值。要构建一个列的数组,我计算行,然后使用for()循环遍历该数字,然后使用$array[] = $value设置递增数组对象的值。

如果单元格中没有值为0,则此方法很有用。该类返回一个数字0,因此它与该类无关,我认为这是我循环遍历行然后将它们分配给数组的方式...我想要通过0值,因为我正在创建图形随后的数据,这是我的代码。

// Get Rainfall
$rainfall = array();
for($i=1;$i<=$count;$i++)
{
    if($data->val($i,2) != 'Rainfall') // Check if not the column title
    {
        $rainfall[] = $data->val($i,2);
    }
}

对于您的信息$data是Excel电子表格对象,方法$data->val(row,col)是返回值的值。在这种情况下,我从列2获取数据。

Screenshot of spreadsheet

4 个答案:

答案 0 :(得分:4)

您是否尝试过array_push()?

array_push($rainfall, $data->val($i,2));

答案 1 :(得分:3)

我会在这里使用与not identical运算符的严格比较,而不是使用not equals运算符:

if($data->val($i,2) !== 'Rainfall')

如果$data->val($i,2)是一个整数并且你使用==,那么双方将被转换为整数,这将给你的结果是所有整数都可以按预期工作,除了零。以下是将字符串“RainFall”与零进行比较时=====之间差异的摘要:

0 == "RainFall" : true
0 != "RainFall" : false
0 === "RainFall" : false
0 !== "RainFall" : true

答案 2 :(得分:1)

我认为数组将0视为false,这可以解释它不会进入数组。这样的事情会起作用吗(如果你使用整数)?

(int)($data->val($i,2));

(float)($data->val($i,2);)

答案 3 :(得分:0)

问题出在if语句中。您正在尝试将字符串与整数进行比较,根据PHP文档,它将对整数进行类型转换。

  

如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。这些规则也适用于switch语句。当比较为===或!==时,不会发生类型转换,因为这涉及比较类型和值。

您可以在此处阅读更多内容http://php.net/manual/en/language.operators.comparison.php

更新:if语句在0的情况下不起作用,因为(int)"Rainfall"将由PHP术语转换为0,导致语句为if (0 != 0) { ... }。< / p>

如果$i表示行号,为什么不从2开始而不是1?