Witam,
mam w pliku tekstowym dane użytkowników: imie, nazwisko, rok urodzenia, miesjce zamieszkania, e-mail. Wyświetlam wszystko wierszami. Jak policzyć ilu użytkowników jest z danego miasta?
Dzięki za podpowiedzi.
[php:1:6cbc6e10ca]<?php
$plik="plik_z_danymi.txt"
$tab=file($plik);
$cnt=count($tab);
$ile=0;
for($i=0; $i<$cnt; $i++){
$cz=explode("|*|", $tab[$i]); //wpisz poprawny separator !
if($cz[3]==$_GET['miasto']){
$ile++;
}
}
echo $ile." - tyle razy w pliku wystepuje ". $_GET['miasto'];
?>[/php:1:6cbc6e10ca]
To takie coś prostego - poprostu pobierasz plik do tablicy kazdą linie dzielisz explodem na czesci i sprawdzasz czy dana czesc jest równa zmiennej którą przekazujesz np. w adresie liczysz to i voila.
Oczywiscie to prosty przykład - zrób to sobie z jakimś bardziej rozbudowanym formularzem - zeby mozna było wybrac czego chcemy szukac (miasto , imie) i podac odpowiednik
Działa jak trzeba

. Dzięki. Z dopisaniem średnika gdzie trzeba. Jak nie korzystam z formularza, po prostu podstawiam konkretną wartość.
To było rzeczywiście proste, ale mam chyba dzisiaj zaćmienie. Teraz mnie czeka sprawdzenie, dla jakich 5 miast są największe wartości. Ktoś ma pomysł ?
Pozdrawiam
FiDO
28.01.2004, 11:23:07
[php:1:0717020598]<?php
$plik = file("dane.txt");
array_walk($plik, create_function('&$var','list(,,$var) = explode("|*|", $var);'));
$miasta = array_count_values($plik);
arsort($miasta);
?>[/php:1:0717020598]
Teraz w tablicy $miasta masz posortowane malejaco wg ilosci wystapien wszystkie miasta.
Proste, skuteczne i uniwersalne. Nie znałem funkcji array_walk. Taki zapis jest dla mnie całkiem nowy. Dzięki.
Zmieniając ustawienia przecinka przed $var można przeanalizować wszystkie dane. Czy ilość przecinków jest ograniczona czymś więcej niż ilością pól w danych?
Pozdrawiam, Al.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.