2013-10-01 113 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

非常感謝。這是我正在尋找的。 –

相關問題