在读取外部 xml 文件中的数据的脚本中反转输出

问题描述

我有一个脚本,它使用 PHPExcel.PHP 读取外部 XML 文件中的值,然后它打印读取最后一次在 XML 文件中找到数字 $extraset 的结果。

我的问题:我应该反转脚本计算结果的方式,因为我的值从新到旧。 示例:如果 10 值出现在第 2 行然后出现在第 6 行,则正确结果应该是:第 2 行出现 10。目前我得到“10 出现在第 10 行”。

有没有办法逆转PHPexcel读取文件的方式?或者也许我可以颠倒处理值的方式?这是脚本:

<?PHP

require_once "Classes/PHPExcel.PHP";

$path = "original_source.xls";
$reader = PHPExcel_IOFactory::createReaderForFile($path);
$excel_Obj = $reader->load($path);

//Get the last sheet in excel
//$worksheet=$excel_Obj->getActiveSheet();

//Get the first sheet in excel
$worksheet=$excel_Obj->getSheet('0');

$lastRow = $worksheet->getHighestRow();
$columncount = $worksheet->getHighestDataColumn();
$columncount_number = PHPExcel_Cell::columnIndexFromString($columncount);

$row_start = 6;
$row_end = 26;
$col_start = 2; //Index of column - C
$col_end = 21; //Index of column - V

$sets = array();
for ($row = 0; $row <= $lastRow; $row++) {
    $set = array();
    for ($col = 0; $col <= $columncount_number; $coL++) {
        if ($row >= $row_start && $row <= $row_end && $col >= $col_start && $col <= $col_end) {
            array_push($set,$worksheet->getCell(PHPExcel_Cell::stringFromColumnIndex($col).$row)->getValue());
        }
        else if ($row > $row_end) {
            break;
        }
    }
    if ($row >= $row_start && $row <= $row_end) {
        array_push($sets,$set);
    }
    else if ($row > $row_end) {
        break;
    }
}

//echo '<pre>'; print_r($sets); die;



$extraset = ['113','15','313'];

$reverse_sets = array_reverse($sets);
foreach ($extraset as $element) {
    foreach ($reverse_sets as $index => $set) {
        if (in_array($element,$set)) {
            $actual_index = count($reverse_sets)-$index-1;
            echo "Extraset element '$element' is in set $actual_index<br>";
            break;
        }
    }
}
?>

我尝试使用 array_reverse,但我一直收到“错误 500”。我有点困惑。 感谢您的帮助

编辑:

我对 array reverse 所做的修改删除 array reverse 函数,以这种方式更改该部分,并且它可以正常工作:


foreach ($extraset as $element) {
    foreach ($sets as $index => $set) {
        if (in_array($element,$set)) {
            $actual_index = count($sets)-$index-1;
            echo "Extraset element '$element' is in set $actual_index<br>";
            break;
        }
    }
}
?>

现在脚本向我输出了正确的值,但我无法修复的是 $actual_index 的工作方式。 这是我的实际输出 Extraset 元素“113”在集合 0 中 Extraset 元素 '15' 在集合 20 中 Extraset 元素 '313' 在集合 20 中

我的问题:搜索值的方式是正确的,但它计算集合的方式是错误的。设置0应该设置20,而设置20应该设置0。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)