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 |
#2 · Zasláno: 8. 11. 2009, 17:58:26
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 |
#3 · Zasláno: 8. 11. 2009, 19:06:49 · Upravil/a: Taps
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 |
#4 · Zasláno: 8. 11. 2009, 20:29:22
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 |
#5 · Zasláno: 8. 11. 2009, 20:56:45
$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>'; |
||
Časová prodleva: 3 dny
|
|||
Taps Profil |
#6 · Zasláno: 12. 11. 2009, 07:59:41
nightfish:
díky |
||
Časová prodleva: 14 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0