2013-10-01 75 views
3

我需要找到CSV中所有列的最小值和最大值,并将这些值用于我的网页中的滑块。最初,我确定CSV文件中的总列数,并基于总列数创建了许多滑块(如亚马逊的价格滑块)。这是创建滑块的代码片段。确定所有CSV列的最小值和最大值

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

在上述片的代码,所述数据滑块范围被给定为1500但是,我需要根据我的CSV列的最小值和最大值定义这些值。如果我事先知道我的总列数,我可以确定所有列的最小值和最大值,如this链接中所述。

假设,如果有5列在我的CSV文件,我需要包括5个滑块,并找到所有的5列的最小值和最大值,并以此作为在上面的代码数据滑盖范围

有人能以正确的方式引导我吗?我不确定这是要在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"]; 
+0

你怎么'$ totalcolumns'? – TheWolf

+0

我用代码更新了我的问题以查找总列数。 –

回答

2

您需要修改的代码块,你得到$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"/>'; 
} 
+0

非常感谢。这是我正在寻找的。 –

相关问题