Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z tablicami
Forum PHP.pl > Forum > Przedszkole
Tajgeer
Witam, posiadam taki kod:

  1. <?php
  2. public static function ShowTags($separator=",", $tags)
  3. {    
  4. global $link;
  5. $tags_array = explode($separator, $tags);
  6. $ile = count($tags_array);
  7. $liczba = 0;
  8. while($liczba <= $ile) {
  9. $name = $tags_array[$liczba];
  10. $link .= "<a href='Tag/$name.html'>$name</a>";
  11. ++$liczba;
  12. }
  13. return $link;
  14. }
  15. ?>


Jest to kod, który ze stringa (w postaci np. (słowo,słowo2)) wyciąga każdy z wyrazów (które są separowane przecinkami), a następnie tworzy link.
Problem w tym, iż otrzymuje błąd: Undefined offset: 2 w linii nr. 9 ($name = $tags_array[$liczba]; ) . Uprzedzam, że ani wzięcie zmiennej w "", ani w taki sposób ($name = $tags_array['.$liczba.']; ) niestety nic nie daje - dalej ten sam błąd.
Na przykład gdy wpiszę liczbe np. 0, to pokazuje mi pierwszy wyraz z tablicy, 1 - drugi itd.
Jak sprawić, aby ten skrypt działał?
athei
Strzelam, że
Kod
while($liczba < $ile)
.
Jeśli używasz funkcji z arg. domyślnym pisz
Kod
ShowTags($tags, $separator=",")
Pilsener
Dlaczego po prostu nie dasz foreach?

  1. <?php
  2. $tags_array = explode($separator, $tags);
  3. foreach($tags_array as $name){
  4.   $link .=  '<a href="Tag/'.$name.'.html">'.$name.'</a>';
  5. }
  6. ?>


- i string dajesz w apostrofach, zwłaszcza, jeżeli używasz kodu HTML.
Luke_Star
dla zabezpieczenia polecam dawac
Kod
trim($tags,",")


dzięki temu ominiesz kilka banalnych bledow z pustym elementem.
alegorn
tak gwoli wyjasnienia czemu miales errora,
blad lezy w tym ze count zwraca ci liczbe elementow, a nie indeksy,

wiec :
  1. <?php
  2. $arr = array(1,6,3,4,7);
  3. echo count ($arr);
  4. ?>

wyswietli ci 5, podczas gdy index ostatniej to 4

wiec by twoj kod zadzialal, wystarczy:
  1. <?php
  2. while($liczba < $ile) {
  3. ?>


i juz.. aczkolwiek lepiej jest uzyc foreach.

tyle ze ja bym jeszcze dopisal

  1. <?php
  2. $tags_array = explode($separator, $tags);
  3. if(is_array($tags_array  ))
  4.  foreach($tags_array as $name)
  5.    $link .=  '<a href="Tag/'.$name.'.html">'.$name.'</a>';
  6. ?>


kwestia tego ze explode w wyjatkowych warunkach zwraca false, a tego w petli nie chcemy :]
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.