0

我有一个函数,它循环遍历 excel 列。它昨天工作,但现在我遇到了问题。我的函数false根据我的返回var_dump()它甚至没有进入 for 循环(我已经在该循环中回显了“这里”并且没有回显)。为什么它不起作用?

$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);
4

1 回答 1

2

对字符串使用<=比较会导致问题,因为它是字母比较,并且按字母顺序“C”>“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;
}
于 2013-08-23T18:13:25.427 回答