hvis de skal fordeles ligeligt vil du altid få et tab af data fra post 500*divfactor, her er et bud på hvordan det kan laves, den er ikke gennem tested, men tested med 4 data filer
fil 1 = 505 poster => divfactor = 1 -> 33 min
fil 2 = 1028 poster => divfactor = 2 -> 68 min
fil 3 = 1714 poster => divfactor = 3 -> 114 min
fil 4 = 2035 poster => divfactor = 4 -> 135 min
<?php
// der laves 15 målinger pr min (1 måling pr 4 sek)
$filname = "test.csv";
// definerer et array på forhånd, med 4 "keys" som hver er endnu et array
$new_ar = array("tid" => array(), "dybde" => array(), "temp" => array(), "co2" => array());
$fil = file($filname);
$maxantalpunkter = 500;
$antal = count($fil); // Tæl antal datapunkter
$antal--; // tæller 1 ned da overskriften ikke skal tælles med som data
$divfactor = 1; // steep mellem datapunkt der skal overføres til $new_ar
// Regn ud hvor mange datapunkter der skal fjernes således man ender på 500 punkter
if($antal > $maxantalpunkter){
// $divfactor = (int)($antal/$maxantalpunkter); // ligesom floor
// $divfactor = floor($antal/$maxantalpunkter); // runder ned, for størst opløsning, men nogle af de sidste målinger vil ikke komme med
// $divfactor = ceil($antal/$maxantalpunkter); // runder op, så alle målinger kommer med, men på bekostning af opløsning
$divfactor = round($antal/$maxantalpunkter); // bedste målinger/opløsning forhold
/********* Start Nødløsning for at får start tidspunktet med ********/
// start tidspunktet (tid 00:00)
if($divfactor>2){
// linje 0 = overskrifter
for($i=1; $i<$divfactor;$i++){
$line = ($fil[$i]);
if(empty($line)) {
continue;
}
$vars = explode(",", $line);
// må kun være i denne løkke 1 gang, derfor bryder jeg ud så snart jeg har fundet start kl 00:00
if(count($vars) >= 4) {
$new_ar["tid"][] = $vars[0];
$new_ar["dybde"][] = $vars[1];
$new_ar["temp"][] = $vars[2];
$new_ar["co2"][] = $vars[3];
break;
}
}
}
/********* Slut Nødløsning for at får start tidspunktet med ********/
}
for($i=$divfactor, $j=0; $i<$antal && $j<$maxantalpunkter; $i+=$divfactor, $j++) {
$line = ($fil[$i]);
if(empty($line)) {
continue;
}
// Del linie op for hvert komma
$vars = explode(",", $line);
if(count($vars) >= 4) {
$new_ar["tid"][] = $vars[0];
$new_ar["dybde"][] = $vars[1];
$new_ar["temp"][] = $vars[2];
$new_ar["co2"][] = $vars[3];
}
}
// echo $divfactor;
// echo "array er ".count ($new_ar["tid"]);
// print_r($new_ar);
?>