Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak usunąć z ciągu ostatni przecinek?
Forum PHP.pl > Forum > PHP
miedzna
Dość często mam taki problem. Mam funkcję rekurencyjną, która zwraca mi jakiś tam ciąg.

Oto funkcja:
  1. function MapaGalezi($ParentID) {
  2.  
  3.  
  4. $result=mysql_query("SELECT id, pid, name FROM table WHERE pid = ".$ParentID." ORDER BY name, id");
  5.  
  6.  
  7. while ( $row = mysql_fetch_array($result) ) {
  8.  
  9. echo "['" . $row["id"] . "', '".$row["pid"]."'],<br />";
  10.  
  11. MapaGalezi($row["id"]);
  12.  
  13. }
  14. }
  15. MapaGalezi(1);


Zwracany ciąg:
['10902', '1'],
['10903', '10902'],
['10905', '10903'],
['10904', '10903'],
['10906', '10902'],
['4837', '1'],
['4886', '4837'],
['4887', '4837'],
['4885', '4837'],
['7770', '1'],

i problem jest taki, że chcę z ostatniej linijki ['7770', '1'], usunąc przecinek. Tylko nie wiem jak.
phpion
substr
http://pl2.php.net/substr
miedzna
ZMieniłem pętlę na :

  1. while ( $row = mysql_fetch_array($result) ) {
  2.  
  3. $string = substr("['" . $row["id"] . "', '".$row["pid"]."'],", 0, -1);
  4.  
  5. echo $string;
  6.  
  7. MapaGalezi($row["id"]);
  8.  
  9. }


i to usunęło wszystkie przecinki.
phpion
Skoro chcesz usunąć tylko ostatni przecinek to usuń go po wyjściu z pętli?
erix
Cytat

substr_replace
dr_bonzo
rtrim( $str, ',' );

usuwa WSZYSTKIE przecinki znalezione na koncu stringa:

Kod
ABCDEF,,,,,,,,,,,,,, => ABCDEF
Fantazyn
Cytat(miedzna @ 15.09.2009, 10:59:42 ) *
ZMieniłem pętlę na :

  1. while ( $row = mysql_fetch_array($result) ) {
  2.  
  3. $string .= substr("['" . $row["id"] . "', '".$row["pid"]."'],", 0, -1);
  4.  
  5. echo $string;
  6.  
  7. MapaGalezi($row["id"]);
  8.  
  9. }

Nie wyświetlaj wszystkiego jak leci, tylko połącz wszystkie wyniki do jednego stringa i dopiero odetnij przecinek.
  1. $string = '';
  2. while ( $row = mysql_fetch_array($result) ) {
  3.  
  4. $string. = "['" . $row["id"] . "', '".$row["pid"]."'],<br />";
  5.  
  6. MapaGalezi($row["id"]);
  7.  
  8. }
  9. $string = substr($string, 0, -1);


Lub skorzystaj z pętli for (oblicz, który element jest ostatni:
  1. $row[count[$row]-1]
i dopiero jemu odetnij przecinek.

Ps. Nie wiem co robi funkcja MapaGalezi, ale ogolnie nie powinnaś od razu wypluwać wszystkiego co przetworzy Ci php.

Edit: Poprawione , dziękuję za uwagę : ).
vokiel
@Fantazyn co to było?
Cytat
  1. $string = '';
  2. while ( $row = mysql_fetch_array($result) ) {
  3.  
  4. $string = "['" . $row["id"] . "', '".$row["pid"]."'],<br />";
  5.  
  6. MapaGalezi($row["id"]);
  7.  
  8. }
  9. $string = substr("['" . $row["id"] . "', '".$row["pid"]."'],", 0, -1);


  1.  
  2. $string = '';
  3. while ( $row = mysql_fetch_array($result) ) {
  4. $string .= "['" . $row["id"] . "', '".$row["pid"]."'],<br />";
  5. MapaGalezi($row["id"]); // cokolwiek to robi
  6. }
  7. $string = rtrim( $string, ',' );
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.