Разбор данных в HTML-таблицы и категории - PullRequest
2 голосов
/ 09 июля 2010

Я должен импортировать файл, скажем, june.txt, который будет иметь такие данные, как следующие данные:

    Sandy,820,384,133,18,408
    Wanda,120,437,128,807,595
    Jane,631,415,142,687,600
    Andrea,179,339,349,594,986
    Wanda,803,191,6,807,322
    Jane,741,975,34,15,832
    Jane,239,714,250,94,497
    Andrea,219,188,411,584,713

И тогда PHP будет разбирать его на 2 разных способа:

Первым способом являются все имена, объединенные вместе с итогами, например:

    Sandy   820     384     133     18      408
    Total   820     384     133     18      408


    Jane    631     415     142     687     600
    Jane    741     975     34      15      832
    Jane    239     714     250     94      497
    Total   1611    2104    426     796     497


    Andrea  179     339     349     594     986
    Andrea  219     188     411     584     713
    Total   398     527     760     1178    1699

    Wanda   120     437     128     807     595
    Wanda   803     191     6       807     322
    Total   923     628     134     1614    917

Второй способ суммирует и складывает имена в большой список, такой как

    Sandy   820     384     133     18      408
    Jane    1611    2104    426     796     497
    Andrea  398     527     760     1178    1699
    Wanda   923     628     134     1614    917

Любая логика или предложения будут полезны, я новичок в PHP и не уверен, как это вообще можно сделать. Мой план состоит в том, чтобы в конечном итоге отобразить результаты в таблицах HTML и сделать их сортируемыми, но я могу заняться этим позже, если кто-то не захочет просто добавить и тому подобное для меня при разборе.

Ответы [ 3 ]

1 голос
/ 09 июля 2010

Я думаю, что что-то полезное для вас было бы функцией explode .

Что касается создания этих представлений, я бы начал с загрузки всех этих данных в ассоциативный массив массивов на основеимя, затем итерируйте при необходимости:

$datafile = file("filename.txt");

// reads lines into an associative array (key is the name) of arrays
// where each sub-array is a list of the records for each name
$arr = array();
foreach($datafile as $line){
    $temp = explode(',', $line);
    $arr[$temp[0]][] = $temp;
}

// iterate over each person
foreach($arr as $person_set){

    // create an array to hold the sum of each column 
    // (and the name in the first column)
    $totals = array();
    $totals[0] = $person_set[0][0];
    for($i = 1; $i < length($record); $i++){
        $totals[$i] = 0;
    }

    // now iterate over each record for this person
    foreach($person_set as $record){

        // print a particular record
        echo implode(' ', $record) . '<br>';

        // add each column (1..end) to the totals array
        for($i = 1; $i < length($record); $i++){
            $totals[$i] += $record[$i];
        }
    }

    // print out the totals line
    echo implode(' ', $totals) . '<br><br>';
}

Я оставлю форматирование этих данных в таблице в качестве упражнения.

0 голосов
/ 09 июля 2010

Вы можете попробовать скрипт, подобный этому:

<?php
echo "<table>";

$data = file("june.txt");
foreach($data as $month) {
    $line = explode(',', $data);
    echo '<tr><td>', implode('</td><td>', $line), '</td></tr>';
}

echo "</table>";

Редактировать: Плохо, не заметил, что вы сортируете / группируете / суммируетеЭто должно установить вас на правильном пути, хотя.Ключ должен использовать $line в качестве источника информации.Просто скомпилируйте его в массив и выведите позже (а не прямо в цикле).

0 голосов
/ 09 июля 2010

Ну, для начала, я бы создал такой файл с PHP fgetcsv(). Docs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...