从外部 xml 文件中获取数组值并在我的 php 脚本中使用它们

问题描述

我有这个脚本:

  1. 回显 $sets 中出现了多少个时间数字,按频率类别对它们进行排序(例如出现一次的值:1,2,3 出现两次的值:8,9,10 ....等)
<?PHP
        

$set1 = ['23','11','52','33','1','4'];
$set2 = ['66','70','55','8','22','1'];
$set3 = ['38','21','51','53','9'];
$set4 = ['14','31','54','5','73','39'];
$set5 = ['10','3','59','39'];
$set6 = ['22','13','4','39'];
$set7 = ['40','30'];
$set8 = ['88','25','71','19'];
$set9 = ['10','30','49','78','46'];
$set10 = ['15','32','11'];
$set11 = ['23','4'];
$set12 = ['26','1'];
$set13 = ['38','9'];
$set14 = ['94','64','39'];
$set15 = ['10','63','39'];
$set16 = ['92','39'];
$set17 = ['40','20'];
$set18 = ['8','89'];
$set19 = ['90','39','15','26'];
$set20 = ['10','36','94','35','18'];

$mergedArray = array_merge($set1,$set2,$set3,$set4,$set5,$set6,$set7,$set8,$set9,$set10,$set11,$set12,$set13,$set14,$set15,$set16,$set17,$set18,$set19,$set20);

$frequencies = array_count_values($mergedArray);

$inverse_frequencies = [];
foreach ($frequencies as $number => $count) {
    $inverse_frequencies[$count][] = $number;
}

ksort($inverse_frequencies);

foreach ($inverse_frequencies as $count => $numbers_array) {
    echo "Values that appear $count times: " . implode(',',$numbers_array) . '<br>';
}

  1. 与 $sets 表相比,回显特定 $extraset 数字的频率
$extraset = ['1','52'] ;

foreach ($extraset as $element) {
    $frequency = $frequencies[$element]??0;
    echo "Extraset element '$element' appears $frequency times<br>";

我需要的是读取外部 xml 文件中 $sets 的值,而不是将它们放入我的 PHP 文件中。

所以我正在尝试使用 PHPExcel,告诉他从哪里收集数据(我只需要 xls 文件的特定部分)。

<?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;
$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 && $col >= $col_start && $col <= $col_end) {
            array_push($set,$worksheet->getCell(PHPExcel_Cell::stringFromColumnIndex($col).$row)->getValue());
        }
    }
    if ($row >= $row_start) {
        array_push($sets,$set);
    }
}
$mergedArray = array_merge($set1,$set10);

$frequencies = array_count_values($mergedArray);

$inverse_frequencies = [];
foreach ($frequencies as $number => $count) {
    $inverse_frequencies[$count][] = $number;
}

ksort($inverse_frequencies);

foreach ($inverse_frequencies as $count => $numbers_array) {
    echo "Values that appear $count times: " . implode(',$numbers_array) . '<br>';
}

$extraset = ['1','52'] ;

foreach ($extraset as $element) {
    $frequency = $frequencies[$element]??0;
    echo "Extraset element '$element' appears $frequency times<br>";

但它不起作用,我仍然收到错误 500。我的代码有什么问题?请注意,我对 PHP 很陌生...! 谢谢

解决方法

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

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

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