[php] obcinanie ciągu znaków

0

napisałem funkcję która ma ucinać niepotrzebne znaki nowego wiersza na końcu każdego elementu tablicy:

function wywal_puste($co) {
    foreach($co as $i => $wartosc) {
        do {
            $end = count($wartosc)-2;
            if(substr($wartosc, $end)=="\n") $co[$i] = substr($wartosc, 0, $end);
            else $r = true;
        } while(!$r);
    }
    return $co;
}

no i wykonuje się w nieskończoność...
Co jest nie tak?

0

warunek pętli
} while(!$r);zaprzeczasz zmiennej $r w tym warunku, natomiast w środku pętli dajesz tej zmiennej wartość true

0

no i co w tym złego?
pętla powinna się wykonywać dopóki $r nie jest prawdziwe, a wykonuje się w nieskończoność :/

0

spróbuj tak ( zamiast twojego if'a ):

if(substr($wartosc, $end)=="\n"){
   $co[$i] = substr($wartosc, 0, $end);
   $r=false;
 }else{
   $r = true;
 }

a pętla jest nieskończona dlatego, że nigdzie nie ma instrukcji mówiącej, że r ma być fałszywe ...

0

a czy r nie jest falszywe skoro go NIE MA? :>

0

Nie bardzo - nie ma znaczy nie jest zdefiniowane, jest falszywe znaczy jest zdefiniowane, jest typu bool i ma wartosc false. To troche co innego, nie?

pozdrawiam
johny

0
function wywal_puste($co) {
    foreach($co as $i => $wartosc) {
        do {
            $end = count($wartosc)-2;
            if(substr($wartosc, $end)=="\n") {
                $co[$i] = substr($wartosc, 0, $end);
                $jest = true;
            }
            else $jest = false;
        } while($jest);
    }
    return $co;
}

teraz jest tak i nadal się nie kończy [glowa]

0

A wiesz, że możesz tak? :)

$tablica = array_map('rtrim', $tablica);
0

jakto?
co wykonuje ta instrukcja? :>

0

Teraz to chyba kpisz?
Kliknij na niej w moim poście to się dowiesz.. no wiesz.. już nawet linkujemy funkcje dla leniwych i jeszcze za mało? :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0