我正在使用一个类,它返回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
获取数据。
答案 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?