微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在读取外部 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 举报,一经查实,本站将立刻删除。