3

我正在使用一个类,它返回 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)是返回值的方法。在这种情况下,我从 column 获取数据2

电子表格的屏幕截图

4

4 回答 4

4

你试过 array_push() 吗?

array_push($rainfall, $data->val($i,2));
于 2010-05-28T13:46:24.620 回答
3

我将在这里使用与不完全相同的运算符进行严格比较,而不是使用不等于运算符:

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

If$data->val($i,2)是一个整数,并且您使用==双方将被强制转换为整数,这将为您提供除零之外所有整数都将按预期工作的结果。以下是比较字符串“RainFall”与零==之间的差异的摘要:===

0 == "RainFall" : true
0 != "RainFall" : false
0 === "RainFall" : false
0 !== "RainFall" : true
于 2010-05-28T13:42:07.673 回答
1

我认为数组将 0 视为假,这可以解释它没有进入数组。像这样的东西会起作用吗(如果您使用的是整数)?

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

或者

(float)($data->val($i,2);)
于 2010-05-28T13:50:17.687 回答
0

问题在于 if 语句。您正在尝试将字符串与整数进行比较,根据 PHP 文档,这会将两者都转换为整数。

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

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

更新: if 语句在 的情况下不起作用,0因为PHP(int)"Rainfall"将类型转换为0导致语句为if (0 != 0) { ... }.

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

于 2010-05-28T13:58:29.740 回答