PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
CSV sorteerimine veeru järgi phps
Postitaja: Gert 2014-09-10 14:41:30
Tervitus

Mul on olemas 8 .csv faili, millele tahan htmlis tabeli näol väljundit anda. Kõik .csv failid on eos juba sorteeritud ühe veeru järgi. Kui kõik veerud kokku liidan on tulemus stiilis:

1,2,3,4,1,2,3,4,5,6,1,2,3,1,2,3,4,5,6,7,8 jne

oleks vaja saada siis 1,1,1,1,1,2,2,2,2,3,4,5,5,5,6,6 jne

äkki kellelgi on mõtteid, kuidas seda teha?

Siiani aretatud kood:

PHP kood:
 $row 1;
        
        
        
$files = array();
        
$array = array(636582586625669616754668);
        while (list(
$var$val) = each($array)) {
            
$params = array ("dateStart" => $dateStart"dateEnd" =>$dateEnd"reportType"=> "SALES_BY_PRODUCT""getCOGS" => "1""productGroupID" => $val );
            
$result $api->sendRequest("getSalesReport",$params);
            
$output json_decode($resulttrue);
            
$files[] = $output['records']['0']['reportLink'];
        }
        
$table = array();
        foreach (
$files as $file) {
            
$row 1;
            if ((
$handle fopen($file"r")) !== FALSE) {
                
$columns = array(3,4,5,6,8,9,10,13);
                while ((
$data fgetcsv($handle1000";")) !== FALSE) {
                    
$num count($data);
                    
$row++;
                    
                    if(
$data[0] != "LINE_NUMBER"){
                    if(
$data[0] != "TOTAL"){
                        echo 
'<tr>';
                        for (
$c=0$c $num$c++) {
                            if (!
in_array($c,$columns)) continue;
                            
                            if(empty(
$data[$c])) {
                                
$value "&nbsp;";
                            }else{
                                
$value $data[$c];
                            }
                            echo 
'<th>'.$value.'</th>';
                        }
                        echo 
'</tr>';
                    }
                }
                    
                    
                }

                
fclose($handle);
            }
        }
RE: CSV sorteerimine veeru järgi phps
Postitaja: Teet Teoreetik 2014-09-10 21:14:09
RE: CSV sorteerimine veeru järgi phps
Postitaja: Gert 2014-09-12 16:01:26
Tere,

usort sobis. lahendasin asja nii:


PHP kood:
 $files = array();
        
$array = array(636582586625669616754668);
        
//$array = array(667);
        
while (list($var$val) = each($array)) {
            
$params = array ("dateStart" => $dateStart"dateEnd" =>$dateEnd"reportType"=> "SALES_BY_PRODUCT""getCOGS" => "1""productGroupID" => $val );
            
$result $api->sendRequest("getSalesReport",$params);
            
$output json_decode($resulttrue);
            
$files[] = $output['records']['0']['reportLink'];
        }
        
        
        
$table = array();
        foreach (
$files as $file) {
            
$row 1;
            if ((
$handle fopen($file"r")) !== FALSE) {
                while ((
$data fgetcsv($handle1000";")) !== FALSE) {
                    
$num count($data);
                        
$table[] = $data;
                }
                
fclose($handle);
            }
        }


        function 
sortByOrder($a$b) {
            return 
$a[10] < $b[10];
        }
        
usort($table'sortByOrder');
        
$columns = array(3,4,5,6,8,9,10,13);
        
$qty = (int)0;
        
$purchase = (int)0;
        foreach (
$table as $key => $event){
            
            if(
$event[0] != "LINE_NUMBER"){
                if(
$event[0] != "TOTAL"){
                    echo 
'<tr>';
                    foreach (
$event as $key => $value){
                        if (!
in_array($key,$columns)) continue;
                            echo 
'<th>'.$value.'</th>';
                            
$qty $qty intval($value[6]);
                            
$purchase $purchase intval($value[8]);
                        }
                    echo 
'</tr>';
                }
            }
        }


Minu vajadused rahuldasks ära, kui ma saaks nüüd kõik veerud all summeerida. Olen pusinud ühte ja teistmoodi aga tulevad alati valed numbrid.


See osa (all pool) ei tööta samuti

PHP kood:
 
$qty 
$qty intval($value[6]);
                            
$purchase $purchase intval($value[8]); 


Mis peaks tegema? Ta küll lööb numbrid kokku aga ma ei saa aru kuidas. Näiteks qty väljal oli viis rida neli 1-te ja üks -1 aga rea summaks andis 5. purchase veerg tundub, et üldse komasid ei arvestanud ja tulid mingid megad arvud
RE: CSV sorteerimine veeru järgi phps
Postitaja: Teet Teoreetik 2014-09-12 19:57:01
semu, sa paistad suht tuima panevat. intval() on täisarvu parsemine. Komadega arve parsed ikka näiteks http://php.net/manual/en/function.floatval.php meetodiga.

Kas sa manuaali üldse ei loe?


p.s. selle if($event[0] != "LINE_NUMBER"){
if($event[0] != "TOTAL"){


saad asendada if($event[0] != "LINE_NUMBER" && $event[0] != "TOTAL"){.

sulle ei teeks paha http://www.amazon.com/Clean-Code-Handbook-Software-Craftsman lugeda. Kuigi seal on Java näited, siis ideed kehtivad kõigi keelte kohta.
RE: CSV sorteerimine veeru järgi phps
Postitaja: lk_ 2014-09-12 20:26:09
Mõni rida, ehk on abiks:

PHP kood:
 
<?php 

var_dump
((int)1.6); // integer täisarv
var_dump((float)1.12345); // float koma-sisaldav


ja massiivi-majandamisel sobilikku:

PHP kood:
 
$arr 
= array(1,2,3,4,5); // esialgne jada
$arr[] = 6// lõppulisamine
echo array_sum($arr); // summa väljastamine

?>

Viimati muudetud: 12-09-2014 20:30:25
Muutja: lk_
Põhjus: kahte lehte...

RE: CSV sorteerimine veeru järgi phps
Postitaja: blaa 2014-09-12 22:42:40
TSITEERITUD:
$qty = (int)0;

et ikka päris kindel oleks, tee nii:
$qty = intval((int)0 * 1);
RE: CSV sorteerimine veeru järgi phps
Postitaja: hahahahahahahaa 2014-09-14 15:53:22
:D
RE: CSV sorteerimine veeru järgi phps
Postitaja: r 2014-09-14 21:29:57
Poisid PHP maailmas täitsa pro'ks juba läinud. Täitsa tore vaadata :)
RE: CSV sorteerimine veeru järgi phps
Postitaja: ise php 2014-09-15 00:19:07
Mis hirmus valu teil nüüd andmeid numbriliseks konvertida on? php tunneb väga hästi ära, et tegu on numbriga ja teeb nendega mtemaatilised tehted korrektselt. Vahet pole kas on string sisestatud või number.
$a="3";
$b=4.2;

Echo $a+$b; // 7.2

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0857110023499