我有一个函数,它遍历excel列。它昨天工作,但现在我遇到了问题。我的函数根据我的false
返回var_dump()
它甚至没有进入for循环(我在该循环中回显了“here”并且没有回显)。为什么不起作用?
$max_col
会返回正确的最大列
function get_col(PHPExcel $excel, $search, $row = 5, $col = "A"){
$max_col = (string)$excel->getActiveSheet()->getHighestColumn(); // returns BH
for($i = (string)$col; $i <= $max_col; $i++){
$val = trim($excel->getActiveSheet()->getCell("{$i}{$row}")->getValue());
$search = preg_quote($search);
if(preg_match("/$search/isU", $val)){
return "$i";
}
}
return false;
}
以下是我调用函数的方法:
$col = get_col($excel, $sku, 5, "Q");
var_dump($col);
答案 0 :(得分:2)
对字符串使用<=
比较会导致问题,因为它是字母比较,按字母顺序“C”&gt; “BH”
将$ max_col的初始值调整为超出您要检查的最大值的一列,然后使用!==
比较
function get_col(PHPExcel $excel, $search, $row = 5, $col = "A"){
$max_col = $excel->getActiveSheet()->getHighestColumn(); // returns BH
$max_col++;
for($i = $col; $i !== $max_col; $i++){
$val = trim($excel->getActiveSheet()->getCell("{$i}{$row}")->getValue());
$search = preg_quote($search);
if(preg_match("/$search/isU", $val)){
return "$i";
}
}
return false;
}