Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z inkrementacją
Forum PHP.pl > Forum > PHP
_maniac
Witam,
podczas próby uruchamiania skryptu wyskakuje mi taki błąd:

atal error: Cannot use assign-op operators with overloaded objects nor string offsets in C:\...\tabela.php on line 215

chodzi tu o linię gdzie jest taki zapis
Kod
$zmienna += 1;

tyle ze podobnych przypisań jest więcej... ten sam bład pojawia sie w pętli gdzie jest inkrementacja :/

po zamianie powyższej linijki na:
Kod
$zmienna = $zmienna + 1;

błąd znika. I chciałem zapytać dlaczego tak jest questionmark.gif Przeciez to jest to samo... a wychodzi na to że w pierwszym przypadku tworzonych jest wiele kopii $zmiennej zamiast ją tylko nadpisać :/
Sedziwoj
Oczywiście zmienna jest gdzieś wcześniej inicjalizowana?

Czy sprawdzałeś to na innych serwerach?
Bo bym stawiał na błąd w danej wersji PHP...
_maniac
nie jest wcześniej inicjiowana... a co za różnica czy ją wcześniej zainicjuje czy przy pierwszym użyciu questionmark.gif

i jeszcze jedno bo mam tez tak samo w pętli tabele i też wyskakuje tem sam bład :/
Kod
for($i = 1; $i <= 10; $i++)
{
    if($warunek[$i])
    {
        $tablica[$i]["nowa_kolumna"] += 1;
    }
}


no i błędy w tym kodzie wyskakują mi przy inkrementacji pętli $i++ i przy dodawaniu do tabeli wartosci o jeden wiekszej. Wcześniej mam zainicjowaną tablice $tablica[$i] a w tej pętli dodaje nowe kolumy i zwiekszam ich wartosc o jeden :/
Sedziwoj
Cytat(_maniac @ 20.09.2007, 15:21:52 ) *
nie jest wcześniej inicjiowana... a co za różnica czy ją wcześniej zainicjuje czy przy pierwszym użyciu questionmark.gif

Ważne aby było zainicjalizowane.

Cytat
no i błędy w tym kodzie wyskakują mi przy inkrementacji pętli $i++


$i jest zainicjalizowane, powtarzam czy testowałeś to na innym serwerze? Gdzie to w ogóle uruchamiasz?
_maniac
testuje to cały czas u siebie na vetrigoserv czyli Apache 2.0.59 i PHP 5.2.3

echhhhhh
wiem ze $i jest zainicjalizowane i dlatego mnie dziwi właśnie...

dobra moze zapytam inaczej moze ktos mądry mi odpowie....
Czy jest różnica między tymi zapisami:
Kod
$i++;
$i += 1;
$i = $i + 1;

tzn czy jest tak ze np w którymś z tych zapisów zanim uzyskam wynik tworzy sie kopia zmiennej w pamieci a w innym po prostu zmienna jest nadpisywana questionmark.gif Tak wiec moje pytanie tyczy sie w sumie bardziej optymalizacji kodu.
legorek
Sprawdź:

  1. <?php
  2. for($i = 1; $i <= 10; $i++)
  3. {
  4. if($warunek[$i])
  5. {
  6. $tablica[$i] = array();
  7. $tablica[$i]["nowa_kolumna"] += 1;
  8. }
  9. }
  10. ?>
Sedziwoj
@_maniac
Przetestuj gdzieś indziej, ale moim zdaniem kłopot tkwi w Twojej instalacji, czyli jeśli to nie problem zainstaluj ponownie. (ja jakoś nie lubię "wszystko w jednym" ale to moje podejście)
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.