Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Moduł tagów
djgarsi
post
Post #1





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Witam. Jestem w trakcie pisania modułu dla pewnego serwisu. Jest to moduł tagów.
Oto mój kod który niby działa, lecz nie do końca:
  1. <?php
  2.  
  3. $string = "jakis super fajnie dlugi ciag znakow.";
  4.  
  5. $string = preg_replace('#[.,)(!]+#', '', $string);
  6. $text = explode(' ', $string);
  7. $words = array();
  8. $len = 0;
  9.  
  10. foreach ($text as $str) {
  11. $word = preg_replace('#[^a-ż]+#i', '', $str);
  12. if (mb_strlen($word) > 0) {
  13. $words[] = $word;
  14. $len += mb_strlen($word);
  15. }
  16. }
  17.  
  18. echo'Tagi: ';
  19.  
  20. for($i=0;$i<=$len;$i++)
  21. {
  22. echo '<a href="/tagi/'.$words[$i].'.html">'.$words[$i].'</a> ';
  23. }
  24.  
  25. ?>


A oto wyświetlane błędy:
Kod
Notice: Undefined offset: 8 in D:\Serwer\www\index.php on line 23
Notice: Undefined offset: 8 in D:\Serwer\www\index.php on line 23
Notice: Undefined offset: 9 in D:\Serwer\www\index.php on line 23
Notice: Undefined offset: 9 in D:\Serwer\www\index.php on line 23
Notice: Undefined offset: 10 in D:\Serwer\www\index.php on line 23
Notice: Undefined offset: 10 in D:\Serwer\www\index.php on line 23
Notice: Undefined offset: 11 in D:\Serwer\www\index.php on line 23
... itd.


Co robię źle w powyższym kodzie?

Ten post edytował djgarsi 17.02.2011, 10:36:33


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




iterujesz po tablicy $words aż do $len. Sek w tym, że $len to nie jest liczba elementów tablicy a liczba liter ze wszystkich słów tablicy. Nic wiec dziwnego, że dostajesz bledy.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Proszę poprawić temat wątku na lepiej opisujący problem.
Go to the top of the page
+Quote Post
djgarsi
post
Post #4





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Czy funkcja end($tablica) będzie odpowiednia?


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Rety, dostałeś podane rozwiązanie jak na tacy a ty w ogole nie myslisz :/

Nie: $len += mb_strlen($word);
a: $len ++;
Tak? Tak, skoro $len ma byc liczbą elementów.
A najlepiej wywal tego for i poprostu uzyj FOREACH

foreach($words as $w)
{
echo '<a href="/tagi/'.$w.'.html">'.$w.'</a> ';
}


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
djgarsi
post
Post #6





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Nospor, może i będzie to dobre:)
Ja jednak oczekiwany efekt uzyskałem dzięki konstrukcji
for($i=0;$i<max(array_keys($words));$i++)
Pozdrawiam i dziękuję za wskazanie mojego błędu.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




O zgrozo....... tongue.gif
Podalem ci DWA rozwiązania. Ty wymysliles trzecie totalnie zakrecone. To tak jakbys do swojej kuchni w swoim domu wchodzil przez okno sąsiadów :/

Jak już to:
$c = count($words);
for($i=0;$i<$c;$i++)

Skoro nie chcesz słuchać rad starszych to chociaż pisz optymalnie z podstawową znajomosci funkcji ktorych raczysz używać


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
djgarsi
post
Post #8





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


No to proszę wyjaśnij mi jaka jest różnica między count($words) a max(array_keys($words)) ?


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wynikowo? Zadna.

Tak samo jak w wyniku nie ma żadnej różnicy między:
1) Iśc do kuchni z pokoju przez przedpokój
2) Iść do kuchni przez balkon do sąsiadów a potem od nich z okna kuchni do naszej kuchni.
Wynik i tu i tu jest takim sam, z tym, że w drugim przypadku więcej się namęczysz i możesz skręcić kark.

Także Twoj "potworek" max(array_keys($words)) akurat dla tej tablicy zwróci taki sam wynik co count() z tym, że Twoj potworek wykona przy tym wiecej operacji i się bardziej zmęczy.
Fakt, różnica zapewne dla Twoich danych nie będzie w ogóle widoczna, ale Ty teraz uczysz się programować i uczysz się programować cholernie nieoptymalnie, bez pomyślunku i durnym kombinowaniem zamiast po prostu użyć coś, co do danej rzeczy jest stworzone smile.gif
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
djgarsi
post
Post #10





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


O widzisz;) I nie mozna było tak od razu że Twoje rozwiązanie jest bardziej optymalne?smile.gif
Jeszcze raz dzieki za pomoc:)


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No przeciez napisałem od razu:
Cytat
Ty wymysliles trzecie totalnie zakrecone. To tak jakbys do swojej kuchni w swoim domu wchodzil przez okno sąsiadów :/

Poza tym, jak ktoś bardziej doświadczony podaje ci 3 rozwiązania to naprawdę nie wymyślaj już czwartego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 22.08.2025 - 01:03