3

CSV のすべての列の最小値と最大値を見つけて、それらの値を Web ページのスライダーに使用する必要があります。最初に、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 は 1,500 として指定されています。ただし、CSV 列の最小値と最大値に基づいてこれらの値を定義する必要があります合計列が事前にわかっている場合は、このリンクで説明されているように、すべての列の最小値と最大値を決定できます。

CSV ファイルに 5 つの列がある場合、5 つのスライダーを含め、5 つの列すべての最小値と最大値を見つけて、上記のコードでdata-slider-rangeとして使用する必要があるとします。

誰かが私を正しい方法で案内してもらえますか? これらのテクノロジーはまったく新しいので、これを PHP で行うか JavaScript で行うかはわかりません。

編集:

合計列を見つけるために、以下のコードを使用している別の PHP ファイルを使用します。

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

次に、SESSION を使用して count($data) を現在の PHP ファイルに渡します。

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

現在の PHP ファイルでは、以下のように CSV ファイルの合計列にアクセスしています。

$totalcolumns = $_SESSION["totalcolumns"];
4

1 に答える 1

3

次のコードを変更する必要があります$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"/>';
}
于 2013-10-02T07:40:22.813 に答える