Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z inkrementacją
_maniac
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.09.2007

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


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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Przeciez to jest to samo... a wychodzi na to że w pierwszym przypadku tworzonych jest wiele kopii $zmiennej zamiast ją tylko nadpisać :/
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


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...
Go to the top of the page
+Quote Post
_maniac
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.09.2007

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


nie jest wcześniej inicjiowana... a co za różnica czy ją wcześniej zainicjuje czy przy pierwszym użyciu (IMG:http://forum.php.pl/style_emoticons/default/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 :/
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #4





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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?
Go to the top of the page
+Quote Post
_maniac
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.09.2007

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


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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Tak wiec moje pytanie tyczy sie w sumie bardziej optymalizacji kodu.

Ten post edytował _maniac 20.09.2007, 20:43:12
Go to the top of the page
+Quote Post
legorek
post
Post #6





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


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. ?>
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #7





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


@_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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:57