Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z odczytywaniem z pliku
Forum PHP.pl > Forum > Przedszkole
vmax96
Witajcie
Bardzo proszę, abyście mnie nie hejtowali - jak temat już był czy coś takiego - jest na forum od dziś i nie wszystko zdążyłem poznać.
Do rzeczy:
Od niedawna uczę się php i chciałem (przy użyciu file_get_contents) zrobić prosty skrypcik, który policzy średnią liczb znajdujących się w pliku. Zawartość pliku wygląda następująco
(linia)(wartosć)
1. 2
2. 2
3. 2
4. 2
W skrypcie wypociłem coś takiego
  1. $fp = file_get_contents("1.txt");
  2. $tab = explode("\n", $fp);
  3. $suma = 0;
  4. $ile = count($tab);
  5. // echo $ile;
  6. foreach ($tab as $tmp){
  7. $suma = $suma + $tmp;
  8. }
  9. echo $suma / $ile;

Nie wiem dlaczego wynik wychodzi 1.5 skoro 8 / 2 = 4
Działa to dopiero jak lekko zmodyfikuję plik i kod. Mianowicie:
Plik:
(linia)(wartość)
1.
2. 2
3. 2
4. 2
5. 2
A kod wygląda tak:
  1. <?php
  2. $fp = file_get_contents("1.txt");
  3. $tab = explode("\n", $fp);
  4. $suma = 0;
  5. $ile = count($tab);
  6. // echo $ile;
  7. foreach ($tab as $tmp){
  8. $suma = $suma + $tmp;
  9. }
  10. echo $suma / ($ile-1);
  11. ?>

Mógłbym oczywiście to zostawić i pójść dalej, ale zależy mi, aby się dowiedzieć dlaczego pierwsza wersja nie zadziałała - co takiego zrobiłem źle smile.gif
StrefaPi
nie masz pustych linii w pliku?, albo kodowanie niestandardowe...
vmax96
Cytat(StrefaPi @ 31.10.2014, 20:05:50 ) *
nie masz pustych linii w pliku?, albo kodowanie niestandardowe...

Faktycznie... Miałem ustawione kodowanie pliku .txt na utf-8...Zmieniłem na ANSI i wszystko działa normalnie. Dzięki za pomoc
Mam jeszcze pytanie. Umiesz mi wyjaśnić dlaczego w tym przypadku kodowanie wpływa na to jak zachowuje się skrypt ?
StrefaPi
bo prawdopodobnie miałeś utf-8 z BOM co powiększa wielkość pliku, a tym samym jest dodatkowa linia na początku
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.