![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Mam dwa pliki, zapisane są w nich dane np. w takim stylu:
Pierwszy plik: 5|^^^|Adam 8|^^^|Bartek 1|^^^|Kamil Drugi plik: 2|^^^|Bartek 1|^^^|Adam 3|^^^|Wojtek 8|^^^|Kamil Plik pierwszy i drugi mogą zawierać różną ilość danych, w pliku pierwszym może być np. login Ziomek i odpowiadająca jemu liczba, a w drugim już tego loginu nie będzie – lub odwrotnie. Chodzi mi o to jak zrobić aby zsumowało liczby według odpowiadających im loginów tzn. 6|^^^|Adam 10|^^^|Bartek 9|^^^|Kamil 3|^^^|Wojtek Jakich do tego trzeba użyć funkcji? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
[manual:06f7652466]file()[/manual:06f7652466]
[manual:06f7652466]if()[/manual:06f7652466] [manual:06f7652466]for()[/manual:06f7652466] [manual:06f7652466]count()[/manual:06f7652466] [manual:06f7652466]explode()[/manual:06f7652466] [scanner] spenalzo, sorki za modyfikację, testowałem nowe BBCode ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
chyba sobie z tym nie poradzę
![]() Zrobiłem skrypt na określony login (za każdym razem trzeba edytować skrypt wpisując inny $login= "Ferdek") , teraz by trzeba było coś zastosować aby przetwarzał wszystkie loginy. Próbowałem pobrać wszystkie loginy z oddzielnego pliku i zastosować pętle while, ale przetwarza tylko dwa loginy. Pomoże ktoś? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Do bólu:
Pokaż odpowiedni kawałek kodu -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
fragment chyba w niczym nie pomoże, lepiej chyba cały:
[php:1:c7d9b0d105] <? $login= "Eryk"; $fil="wyniki/zw1.txt"; //plik z danymi $tablic=file($fil); //robie z pliku tablice $il=count($tablic); //licze ilość elementów w tablicy for($i=0; $i<=$il-1; $i++){ $czes=explode("|^^^|", $tablic[$i]); //dziele linie w pliki na kawałki if(ereg(($login),$czes[1])){ //sprawdzam czy taki nic nie jest juz zapisany $file="wyniki/zw2.txt"; //plik z danymi $tablica=file($file); //robie z pliku tablice $ile=count($tablica); //licze ilość elementów w tablicy for($i=0; $i<=$ile-1; $i++){ $czesc=explode("|^^^|", $tablica[$i]); //dziele linie w pliki na kawałki if(ereg(($login),$czesc[1])){ //sprawdzam czy taki nic nie jest juz zapisany $cz = $czesc[0]+$czes[0]; echo(" $cz"); $plik=fopen('list.txt', "a"); // jak wszystko jest ok to zapisuje dane flock($plik, 2); fwrite($plik, "{$cz}|^^^|{$login}n"); // n- oznacza przejscie do następnej linii... flock($plik, 3); fclose($plik); exit; } } $cz = $czes[0]; $plik=fopen('list.txt', "a"); // jak wszystko jest ok to zapisuje dane flock($plik, 2); fwrite($plik, "{$cz}|^^^|{$login}n"); // n- oznacza przejscie do następnej linii... flock($plik, 3); fclose($plik); } } $file="wyniki/zw2.txt"; //plik z danymi $tablica=file($file); //robie z pliku tablice $ile=count($tablica); //licze ilość elementów w tablicy for($i=0; $i<=$ile-1; $i++){ $czesc=explode("|^^^|", $tablica[$i]); //dziele linie w pliki na kawałki if(ereg(($login),$czesc[1])){ //sprawdzam czy taki nic nie jest juz zapisany $cz = $czesc[0]; $plik=fopen('list.txt', "a"); // jak wszystko jest ok to zapisuje dane flock($plik, 2); fwrite($plik, "{$cz}|^^^|{$login}n"); // n- oznacza przejscie do następnej linii... flock($plik, 3); fclose($plik); exit; } } ?>[/php:1:c7d9b0d105] Działa tylko dla okreslonego loginu |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
nie chce mi sie interpretowac twojego kodu :wink:
[php:1:f7e0b34fa5]<?php $separator='|^^^|'; $p1=file('plik1.txt'); $p2=file('plik2.txt'); $result=array(); for($i=0;$i<count($p1);$i++){ $ex1=explode($separator,trim($p1[$i])); for($i2=0;$i2<count($p2);$i++){ $ex2=explode($separator,trim($p2[$i])); if($ex1[1]==$ex2[1]){ $result[]=($ex1[0]+$ex2[0]).$separator.$ex1[1]; continue; } $result[]=$ex2[0].$separator.$ex2[1]; } $result[]=$ex1[0].$separator.$ex1[1]; } ?>[/php:1:f7e0b34fa5] 1.To tak na szybko bez sprawdzania. Rozszerz se to o kompatybilnosc z wielkimi i malymi literami by 'lolek'=='Lolek' 2. Skrypt nie bedzie dzialal poprawnie gdy w 1 pliku mamy dwa taklie same loginy, jesli chcesz by to uwzglednial to pomysl 8) 3. wynik jet w tablicy $result |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
W moim skrypcie znajduje się polecenie exit;, myśle że dla tego nie przetważa kolejnych zmiennych!
Czy można je jakims innym poleceniem zastąpić aby nadal zatrzymywał, ale żeby powrócił na początek i pobrał następny login?? $dir = "./loginy/"; - w tym katalogu znajdują się pliki $login.txt [php:1:6df8e0e03a]<?php $i = 1; while ($i <= 10): $dir = "./loginy/"; $katalog = opendir($dir); while($login = readdir($katalog)){ $ext = explode(".", $login); if($ext[count($ext) - 1] == "txt"){ echo $login; $wie= "list"; //eeeeeeeeee $file="$wie.txt"; //plik z danymi $tablica=file($file); //robie z pliku tablice $ile=count($tablica); //licze ilość elementów w tablicy for($i=0; $i<=$ile-1; $i++){ ..... exit; //tuuuuuuuuuuuuuuuuuuuuuuuuuuuuu } ..... exit; //tuuuuuuuuuuuuuuuu } } } } closedir($katalog); $i++; endwhile; ?>[/php:1:6df8e0e03a] |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
tu masz poprawiony moj kod:
[php:1:05ce631167]<?php $separator='|^^^|'; $p1=file('plik1.txt'); $p2=file('plik2.txt'); $result=array(); foreach($p1 as $k1=>$v1){ $ex1=explode($separator,$v1); foreach($p2 as $k2=>$v2){ $ex2=explode($separator,$v2); if($ex1[1]==$ex2[1]){ $result[]=($ex1[0]+$ex2[0]).$separator.$ex1[1]; unset($p1[$k1]); unset($p2[$k2]); } } } $result=array_merge($p1,$p2,$result); print_r($result); ?>[/php:1:05ce631167] Cytat W moim skrypcie znajduje się polecenie exit;, myśle że dla tego nie przetważa kolejnych zmiennych!
Czy można je jakims innym poleceniem zastąpić aby nadal zatrzymywał, ale żeby powrócił na początek i pobrał następny login?? mozna uzywajac petli while() w ten sposob: [php:1:05ce631167]<?php while(true){ //jakis kod //tu chcesz powrucic do poczatku continue; //tu chcesz przerwac break; } ?>[/php:1:05ce631167] |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za kod evo.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 10:13 |