Autor Zpráva
Taps
Profil
v textovém souboru mám tyto hodnoty
153;Petr;1;400;400
354;Jirka;1;420;420
228;Petr;1;400;400

a potřebuji aby ve výstupu bylo níže uvedené. Tzn aby hodnoty 3 a 4 sloupečku byly sečteny tam kde jsou ve 2 sloupečku stejné udaje.

153;Petr;2;400;800
354;Jirka;1;420;420

Má někdo nějaký nápad jak tento problém vyřešit.
nightfish
Profil
z tohoto zápisu vytvořit pole (A)
vytvořit si prázdné pole (B)
pomocí foreach procházet pole (A)
kontrolovat, jestli je aktuální položka procházeného pole přítomna v (B); pokud ano, tak přičíst, pokud ne, tak přidat
výstupem je pole (B)
Taps
Profil
nightfish:
zkoušel jsem toto
         foreach($file as $objednavka)/* soubor s daty */
         {
  $data=explode(";",$objednavka);
 }

 
 $b=array();
 if(!in_array($data[1],$b)){
        $b[]=$data[0].";".$data[1].";".$data[2].";".$data[3].";".$data[4]."\n"; 
         
 }
 else{
 foreach($data as $new)
 $rozdel=explode(";",$new);
           if(strpos($b[1],$rozdel[1])!==false)   {
               
               $b[]=$rozdel[0].";".$rozdel[1].";".$rozdel[2]+5.";".$rozdel[3].";".$rozdel[4]+2."\n"; 
               
           }
          
                print_r($b);
 }
            

ale asi mám někde chybu - nefunguje, hodnoty v konečné fázi potřebuji zapsat do souboru
AM_
Profil
foreach($file as $objednavka)/* soubor s daty */
 {
        $data = str_replace(array('\r\n', '\r'), '\n', $data);
        $data=explode("\n",$objednavka);
        foreach ($data as $radek){
          $radek=explode(';', $radek);
          //TADY to musis zpracovat, jinak si to budes porad prepisovat
        }
 }

Jinak takovéto chyby můžeš klidně odhalit sám, kdyby sis kdekoli v kódu nechal vypsat důležité proměnné (na pole slouží print_r nebo var_dump), hned uvidíš, co může být špatně.
nightfish
Profil
$f = file('soubor.txt');
$vystup = array();
foreach ($f as $v) {
  $e = explode(';', $v);
  $jmeno = $e[1];
  if (isset($vystup[$jmeno])) { $vystup[$jmeno][2] += $e[2]; $vystup[$jmeno][3] += $e[3]; }
  else $vystup[$jmeno] = $e;
}
echo '<pre>'; print_r($vystup); echo '</pre>';
Taps
Profil
nightfish:
díky
Toto téma je uzamčeno. Odpověď nelze zaslat.