Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Foreach na wielowymiarowych tablicach, Nie zmienia wartości
mimol
post 4.02.2013, 18:03:44
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

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


  1. $tab = array();
  2. $a = array('id'=>1, 'amount'=>4);
  3. $b = array('id'=>3, 'amount'=>3);
  4. $tab[] = $a;
  5. $tab[] = $b;
  6.  
  7. foreach ($tab as $st){
  8. if ($st['id'] == 3) {
  9. $st['amount']=555;
  10. }
  11.  
  12. }

Dlaczego ten kod nie działa poprawnie?
Chciałem po prostu zmienić amount na 4 dla id =3
Wiem, że w foreachu mógłbym sobie zapisywać ID dla taba i potem to zmieniać, ale wydaje mi się to mało profesjonalne,
Go to the top of the page
+Quote Post
nospor
post 4.02.2013, 18:08:13
Post #2





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




$st to kopia wartości a nie wartosc

nie: as $st
a: as &$st

Referencja...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ano
post 4.02.2013, 18:09:27
Post #3





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

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


  1. $tab = array();
  2. $a = array('id'=>1, 'amount'=>4);
  3. $b = array('id'=>3, 'amount'=>3);
  4. $tab[] = $a;
  5. $tab[] = $b;
  6.  
  7. foreach ($tab as &$st){
  8. if ($st['id'] == 3) {
  9. $st['amount']=555;
  10. }
  11.  
  12. }


Domyślnie "tablice" w php są przekazywane przez wartość. Dlatego musisz użyć operatora &, ktory spowoduje przekazanie wartości referencji.


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.05.2024 - 22:05