我需要找到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"/>';
}
?>
在上面的代码中,数据滑块范围为1,500 。 但是,我需要根据我的CSV列的最小值和最大值来定义这些值。如果我事先知道了我的总列数,我就可以确定this链接中讨论的所有列的最小值和最大值。
假设我的CSV文件中有5列,我需要包含5个滑块,找到所有5列的最小值和最大值,并将它们用作 data-slider-range 上面的代码。
有人可以以正确的方式指导我吗?我不确定这是用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"];
答案 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"/>';
}