Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]stripos nie działa ...
pawkow
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 7
Dołączył: 30.09.2006

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


  1. <?php
  2. $report_arr = array();
  3. $report_arr[] = 'ble ble ble';
  4. $report_arr[] = 'Grupy Ilość Straty  Doświadczenie przed walką Doświadczenie po walce';
  5. $report_arr[] = 'Łucznik  50 0  492 492';
  6. $report_arr[] = 'ble ble ble';
  7.  
  8.  
  9. for ($i = 0; $i <= count($report_arr)-1; $i++)
  10. {
  11. if (stripos($report_arr[$i], 'Grupy') > 0) {
  12. echo $i;
  13. }
  14. }
  15. ?>

Kod nie zwraca absolutnie nic ... Widzi ktoś jakikolwiek błąd ?

Ten post edytował Ociu 22.06.2008, 18:53:45
Powód edycji: Poprawiłem bbCode (ociu)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




stripos" title="Zobacz w manualu PHP" target="_manual zwraca pozycję napotkanego ciągu. W twoim przypadku widac wyraźenie, że Grupy znajdują się na pozycji zerowej.
dlatego też w takich sytuacjach nalezy sprawdzac dokładnie co zwraca funkcja czyli
  1. <?php
  2. if (stripos($report_arr[$i], 'Grupy') !== 0) {
  3. ?>
Go to the top of the page
+Quote Post
nevt
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


w kodzie nie ma błędu, za to jest błąd w logice.
stripos() zwraca pozycje podciągu indeksowaną od zera, więc twój warunek powinien wyglądać:
  1. <?php
  2. if (stripos($report_arr[$i], 'Grupy') >= 0) {
  3. ?>

ale jest jeszcze jedna pułapka, jak nic nie znajdzie, to zwróci FALSE co przy porównaniu z liczba zostanie zamienione na zero... więc tak naprawdę ten warunek powinien wygądać:
  1. <?php
  2. if (stripos($report_arr[$i], 'Grupy') !== false) {
  3. ?>
Go to the top of the page
+Quote Post
zakręcony
post
Post #4





Grupa: Zarejestrowani
Postów: 107
Pomógł: 10
Dołączył: 26.09.2007

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


ja bym podmienił to:
  1. <?php
  2. if (stripos($report_arr[$i], 'Grupy') > 0)
  3. ?>

na
  1. <?php
  2. if (stripos(' '.$report_arr[$i].' ', 'Grupy') > 0)
  3. ?>

wtedy masz swoje $i (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

edit:
lub tak jak podal nevt (napisał szybciej, no i inaczej)

Ten post edytował ayeo 22.06.2008, 18:55:28
Go to the top of the page
+Quote Post
scanner
post
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




~zakręcony: wiesz co piszesz i po co czy tylko posty nabijasz?
Go to the top of the page
+Quote Post
zakręcony
post
Post #6





Grupa: Zarejestrowani
Postów: 107
Pomógł: 10
Dołączył: 26.09.2007

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


wiem co pisze, dzięki mojemu (może nie doskonałemu rozwiązaniu, bo te podał nevt) wiem w którym elemencie tablicy jest szukany wyraz, a nie w którym go nie ma, jak podałes Ty (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

wydaje mi się czy na ilośc postów nie ma tu bonusów?
Go to the top of the page
+Quote Post
pawkow
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 7
Dołączył: 30.09.2006

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


Dobra, temat do zamknięcia, faktycznie, błąd logiczny (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
scanner
post
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




~zakręcony: problemem było nie znalezienie klucza, ale zła obsługa wyników zwracanych przez funkcję. Poza tym, do danych, które trzeba przeszukać doklejasz jakiś inne zbędne dane - a to jest niedopuszczalne.
Go to the top of the page
+Quote Post
Ociu
post
Post #9





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




PHP -> Przedszkole.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 16:06