Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Proble z zliczaniem stringów.
joshua
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 8.11.2003
Skąd: z domu...

Ostrzeżenie: (0%)
-----


Posiadam dwa pliki arts_cat.txt i plik arts.txt. Chciałbym wyświetlić
zawartość pierwszego pliku i odpowiednio policzyć dla niego stringi
z drugiego pliku. Wygląda to tak:

Pierwszy:
dzial||nazwa||opis||

Plik arts_cat.txt:
1||Ogólny||Opis 1.||
2||Wydarzenia||Opis 2.||
3||Imprezy||Opis 3.||

Drugi:
kto||Tytul||Tresc artu||data||dzial||

Plik arts.txt:
joshua||test||oto test||10.01.2006||1||
si6||test2||oto test2||14.01.2006||3||
kozi||test3||oto test3||12.01.2006||2||
joshua||testxx||oto testxx||13.01.2006||1||
jareq||tescior||oto gut test||11.11.2006||1||

Kod który wyświetla działy:
[php:1:41112f028e]
for($i=0;$i<$art_cat_file_c;$i++){
$string = explode("||", $art_cat_file[$i]);
echo "ID: $string[0] // Nazwa: $string[1] // Opis: $string[2] //";
}
[/php:1:41112f028e]

I wszystko ok. Ale np. chciałbym wyswietlić ilość artów w dziale:

Np. ID: 1 // Nazwa: Ogólny // Opis: Opis 1. // Ilość: 3

Ilość ta sumowana by była z pliku arts.txt(string 4).

Mam coś takiego, ale to jest źle:

[php:1:41112f028e]

$art_cat = "arts_cat.txt";
$art_cat_file = file($art_cat);
$art_cat_file_c = count($art_cat_file);

$arts = "arts.txt";
$arts_file = file($arts);
$arts_file_c = count($arts_file);


for($i=0;$i<$art_cat_file_c;$i++){
$split = explode("||", $art_cat_file[$i]);

for($in=0;$in<$arts_file_c;$in++){
$lite = explode("||", $arts_file[$in]);

if($lite[6] == $split[0]){
$count++;
} else {
$count = 0;
}
}
echo "ID: $split[0] // Nazwa: $split[1] // Opis: $split[2]. // Ilość: $count";
}
[/php:1:41112f028e]

Wyświetla mi wszystko dobrze(tylko 1 dział dobrze podlicza), lecz następne działy zawsze mają wartość $count równą 1.
Co jest?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
joshua
post
Post #2





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 8.11.2003
Skąd: z domu...

Ostrzeżenie: (0%)
-----


Oto ostateczny kod, może się komuś przyda:

[php:1:080031a910]
$arts = file("arty.txt");
$arts_c = count($arts_file);

$art_cat = file("catalogi.txt");
$art_cat_c = count($art_cat_file);

$tab = array();

for($c=0;$c<$arts_c;$c++){
$split_c = explode("||", $arts[$c]);
$tab[] = $split_c[6];
}

$ilosci = array_count_values($tab);

for($b=0;$b<$art_cat_c;$b++){
$split_b = explode("||", $art_cat[$b]);

if($ilosci[$split_b[0]] == ""){
$ilosci[$split_b[0]] = "0";
}
echo "ID: ". $split_b[0] ." // Nazwa: ". $split_b[1] ." // Opis: ". $split_b[2] ." // Ilość: ". $ilosci[$split_b[0]]. "<br>";
}
[/php:1:080031a910]


I dodatkowe pytanie, co jest bardziej ekonomiczne(w przypadku sprawdzania pliku,
linia po linni) funkcja foreach, czy for?

Oczywiście wszystko działa, więc punkt dla FiDo, thx.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 14:32