Определить минимум и максимум всех столбцов CSV

Мне нужно найти минимальное и максимальное значения всех столбцов в CSV и использовать эти значения для моего ползунка на моей веб-странице. Сначала я определяю общее количество столбцов в CSV-файле и, основываясь на общем количестве столбцов, создаю множество ползунков (например, ползунок цен на Amazon). Это фрагмент кода для создания слайдеров.

<?php
for ( $i = 1; $i < $totalcolumns; $i++ ) { 
    echo '<input type="text" data-slider="true" data-slider-range="1,500" data-slider-step="1"/>';
}
?> 

В приведенном выше фрагменте кода data-slider-range задан как 1500. Однако мне нужно определить эти значения на основе минимального и максимального значений моих столбцов CSV. Если я заранее знаю свои общие столбцы, я могу определить минимальное и максимальное значения всех столбцов, как описано в эта ссылка.

Предположим, что если в моем CSV-файле 5 столбцов, мне нужно включить 5 ползунков, найти минимум и максимум для всех 5 столбцов и использовать их в качестве диапазона ползунков данных в приведенном выше коде.

Может кто-нибудь, пожалуйста, направьте меня в правильном направлении? Я не уверен, нужно ли это делать в PHP или javascript, поскольку я совершенно не знаком с этими технологиями.

ИЗМЕНИТЬ:

Чтобы найти общее количество столбцов, я использую другой файл PHP, в котором я использую приведенный ниже фрагмент кода.

$handle = fopen('demo.csv', 'r');
if (($data = fgetcsv($handle, 1000, ',')) !== false) {
}

И затем я использую SESSION для передачи счетчика ($ data) в мой текущий файл PHP.

$_SESSION["totalcolumns"] = count($data);

В моем текущем файле PHP я получаю доступ к общим столбцам в моем файле CSV, как показано ниже.

$totalcolumns = $_SESSION["totalcolumns"];

person ram esh    schedule 01.10.2013    source источник
comment
Как получить $totalcolumns?   -  person TheWolf    schedule 02.10.2013
comment
Я обновил свой вопрос с кодом, чтобы найти totalcolumns.   -  person ram esh    schedule 02.10.2013


Ответы (1)


Вам нужно изменить часть кода, где вы получаете $totalcolumns, чтобы:

$data = [];
$total_columns = 0;
$handle = fopen('data.csv', 'r');

while (false !== ($row = fgetcsv($handle, 1000, ','))) {
    0 === $total_columns and $total_columns = count($row);

    $i = 0;
    while (++$i <= $total_columns) {
        $data[$i][] = (int) $row[$i - 1];
    }
}

$i = 0;
while (++$i <= $total_columns) {
    $_SESSION["min-column-$i"] = min($data[$i]);
    $_SESSION["max-column-$i"] = max($data[$i]);
}

$_SESSION['totalcolumns'] = $total_columns;
fclose($handle);

Для такого data.csv:

3,4,5,6,7
10,8,1,8,8
3,6,7,8,2

у вас будут эти $_SESSION значения:

var_dump($_SESSION);
array(11) {
    'min-column-1' => int(3)
    'max-column-1' => int(10)
    'min-column-2' => int(4)
    'max-column-2' => int(8)
    'min-column-3' => int(1)
    'max-column-3' => int(7)
    'min-column-4' => int(6)
    'max-column-4' => int(8)
    'min-column-5' => int(2)
    'max-column-5' => int(8)
    'totalcolumns' => int(5)
}

Затем вы сможете использовать значения диапазона следующим образом:

$i = 0;
while (++$i <= $_SESSION['totalcolumns']) {
    $range = $_SESSION["min-column-$i"] . ',' . $_SESSION["max-column-$i"];
    echo '<input type="text"
                 data-slider="true"
                 data-slider-range="', $range, '"
                 data-slider-step="1"/>';
}
person Alexander Yancharuk    schedule 02.10.2013