Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] substr_count, brak wyników (Solved)
Wykrywacz
post 2.10.2006, 09:09:26
Post #1





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Męcze się z jedną rzeczą. Mam
  1. <?php
  2. $uploadfile = $_FILES['plik']['tmp_name'];
  3.  $name = $_FILES["plik"]["name"];
  4.  $size = $_FILES["plik"]["size"];
  5.  $type = $_FILES["plik"]["type"];
  6.  
  7. $imp = file($uploadfile);
  8. $ilosc= count($imp);
  9. echo $ilosc,'ilosc';
  10. for ($i=0; $i<$ilosc; $i++)
  11. {
  12.  $acount=substr_count($string,";");
  13. }
  14. echo $acount,'ilosc sredników';
  15. ?>


W czym problem $acount w wyniku wyświetla mi "0".

W czym to może być problem?

Ten post edytował Wykrywacz 2.10.2006, 10:30:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Xathloc
post 2.10.2006, 09:15:18
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 12.09.2006
Skąd: znad klawiatury

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


co to za zmienna $string ?


--------------------
pozdrawiam
Krzysiek

RIP sygnaturka
Go to the top of the page
+Quote Post
Wykrywacz
post 2.10.2006, 09:16:38
Post #3





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Ajć pisane z łapy i przeklejane naturalnie chodzi o
  1. <?php
  2. $acount=substr_count($imp,";");
  3. ?>


Ten post edytował Wykrywacz 2.10.2006, 09:17:02
Go to the top of the page
+Quote Post
kszychu
post 2.10.2006, 09:25:52
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


$imp nie jest łańcuchem, tylko tablicą. Zacząłeś dobrze (tablica for) ale później zliczasz w niej cały czas to samo zqamiast liczyć średniki w kolejnych $imp[$i].
A jeśli chodzi o samego for, to lepiej użyj foreach.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Wykrywacz
post 2.10.2006, 09:54:26
Post #5





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


No właśnie nie wsadzałem tego przez $imp[$i] ponieważ chce aby obliczyło mi średniki w całym dokumencie.
A nie umiem znaleźć jak zrobić żeby z substr_count czesał mi cały dokument:

co do pętli też mam pytanie(niezbyt do tej pory lubiliśmy się z foreach):
w manulau znalazłem 2 typy budowy foreach
  1. <?php
  2. $a_array=array("a","b","c");
  3. foreach($a_array as $key=>$value):
  4.  print $key." = ".$value."<br>";
  5. endforeach;
  6. ?>


  1. <?php
  2. foreach($i=1;$i<10;$i++):
  3.  print $i;
  4. endforeach;
  5. ?>


Problem w tym że to pierwsze niemam pojęcia jak użyć w moim skrypcie (tak lajkonicznie poprostu ... nie kumam działania)

A ten drugi wywala mi błędy w Zendzie.

Dla ścisłości bo może się to okazać miej lub bardziej istotne potrzebuje ilość numeryczną.
A swoją drogą mam pytanie dlaczego nie może być for ? - przy for dla jednego wiersza pokazuje mi prawidłowy wynik.
Go to the top of the page
+Quote Post
kszychu
post 2.10.2006, 10:00:50
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Nie no, w tym drugim przykładzie to pomyliłeś składnię z for. Składnia foreach jest dwojaka:
  1. <?php
  2. foreach($tablica as $indeks => $wartosc) {
  3.  echo "Wartość dla indeksu $indeks wynosi $wartosc.<br />";
  4. }
  5. // lub uproszczona
  6. foreach($tablica as $wartosc) {
  7.  // ....
  8. }
  9. ?>


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Wykrywacz
post 2.10.2006, 10:09:39
Post #7





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


ok zrozumiałem smile.gif
Zrobiłem
  1. <?php
  2. $imp = file($uploadfile);
  3. $ilosc= count($imp);
  4. echo $ilosc,'ilosc';
  5.  
  6. foreach($imp as $wartosc) {
  7.  $acount=substr_count($wartosc,";");
  8. }
  9. echo $acount,'ilosc sredników';
  10. ?>


Tylko nadal podaje mi wartość tylko dla zerowego wiersza. A chodzi mi o sumę całkowitą ";" w całym dokumencie.
Go to the top of the page
+Quote Post
Xathloc
post 2.10.2006, 10:25:11
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 12.09.2006
Skąd: znad klawiatury

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


Zastosowanie pętli foreach w tego typu działaniu wydaje mi się cokolwiek zbędne. Skorzystałbym jednak z pętli for
  1. <?php
  2. $acount = 0;
  3. for($i=0; $i<count($imp); $i++) {$acount += substr_count($imp[$i],";");}
  4. ?>

A zliczania nie ma, bo za każdym razem tworzysz nową wartość zmiennej $acount zamiast ją sumować.
Powinno być:
  1. <?php
  2. $acount += substr_count($wartosc,";");
  3. ?>


--------------------
pozdrawiam
Krzysiek

RIP sygnaturka
Go to the top of the page
+Quote Post
Wykrywacz
post 2.10.2006, 10:29:40
Post #9





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Czy możesz proszę rozwinać dla czego zbędne?

skoro formuła jest znacznie prostsza dla foreach?

A wogóle to dziękuje za pomoc już działa smile.gif tylko jestem ciekaw czemu for
jednak było by lepsze i tak naprawdę co za różnica?
Go to the top of the page
+Quote Post
Xathloc
post 2.10.2006, 10:39:00
Post #10





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 12.09.2006
Skąd: znad klawiatury

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


Pewnie jak zwykle jest to kwestia upodobań ^^
Chodziło i raczej o to, że zmiana kodu z for na foreach była zbędna, bo nie tu leżał problem smile.gif

Ten post edytował Xathloc 2.10.2006, 10:39:30


--------------------
pozdrawiam
Krzysiek

RIP sygnaturka
Go to the top of the page
+Quote Post
kszychu
post 2.10.2006, 10:41:14
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Oczywiście można to zrobić na wiele sposobów; za pomocą for, foreach, while, list. Jednak foreach wydaje się właśnie do tego stworzone (operuje tylko na tablicach) i ma prostą składnię.

A tak na marginesie:
  1. <?php
  2. $imp = file($uploadfile);
  3. $imp2 = implode(' ', $imp);
  4. $ilosc = substr_count($imp2,";");
  5. echo $ilosc,'ilosc';
  6. ?>


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Wykrywacz
post 2.10.2006, 10:53:23
Post #12





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Ok rozumiem.

Mam tylko jeszcze jedno pytanie po co to?

  1. <?php
  2. $imp2 = implode(' ', $imp);
  3. ?>


counta i tak musze mieć bo potem robie if'a
  1. <?php
  2. if ($acount / 33 == $ilosc){
  3. ?>


Ale ciekaw jestem czemu takie rozwiązanie?
Go to the top of the page
+Quote Post
kszychu
post 2.10.2006, 10:58:47
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


implode łączy Ci całą tablicę w jeden ciąg, dzięki czemu counta robisz raz a nie dla każdego pola osobno.

A poza tym: @Wykrywacz, Ty coś ostatnio mało chyba do manuala zaglądasz. Chyba muszę Ci zadać jakąś pracę domową ;-)


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Wykrywacz
post 2.10.2006, 11:21:05
Post #14





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Przyznaje się smile.gif nie sprawdziłem .

Ale też może dla tego że nie mieściło mi się że można to tak też rozwiązać smile.gif.
W każdym razie dzięki smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:50