Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]dodanie klucza i wartości do tablicy
jakis_login
post
Post #1





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

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


witam,
mam taką zmienna np. $zmienna gdzie po wykonaniu print_r pokazuje mi coś takiego:
  1. (
  2. [0] => Array
  3. (
  4. [price] => 170
  5. [prices] => Array
  6. (
  7. [0] => Array
  8. (
  9. [product_id] => 19086
  10. [price] => 170,00
  11. )
  12.  
  13. [1] => Array
  14. (
  15. [product_id] => 19086
  16. [price] => 164,90
  17. )
  18. )
  19. )
  20.  
  21. [1] => Array
  22. (
  23. [price] => 170
  24. [prices] => Array
  25. (
  26. [0] => Array
  27. (
  28. [product_id] => 19088
  29. [price] => 170,00
  30. )
  31.  
  32. [1] => Array
  33. (
  34. [product_id] => 19088
  35. [price] => 164,90
  36. )
  37. )
  38. )
  39. )


Teraz proszę pomóżcie mi dodać do $zmienna następną wartość do tablicy np. [pricevat] którą bedę chciał zrobić * 1.23

  1. [1] => Array
  2. (
  3. [price] => 170
  4. [prices] => Array
  5. (
  6. [0] => Array
  7. (
  8. [product_id] => 19088
  9. [price] => 170,00
  10. [pricevat] => 170,00
  11. )
  12.  
  13. [1] => Array
  14. (
  15. [product_id] => 19088
  16. [price] => 164,90
  17. [pricevat] => 164,90
  18. )
  19. )
  20. )

Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Tak z głowy pewnie będzie coś takiego, ale sprawdź czy działa:
  1. foreach($zmienna as $a => $b)
  2. {
  3. foreach($b as $c => $d)
  4. {
  5. foreach($c['prices'] as $e => $f)
  6. {
  7. foreach($f as $g => $h)
  8. {
  9. $h['pricevat'] = 1.23 * $h['price'];
  10. }
  11. }
  12. }
  13. }


Ten post edytował darko 26.10.2011, 08:17:44
Go to the top of the page
+Quote Post
jakis_login
post
Post #3





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

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


hmmm. coś nie działa, nie dorzuca wcale pricevat, może o jedno foreach za dużo?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Wklej tutaj tą tablicę, a nie print_r z tablicy.
Go to the top of the page
+Quote Post
jakis_login
post
Post #5





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

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


powiedzmy ze coś takiego:
  1. $arr = array(
  2. 0=>array('price'=>170, 'prices'=>array(0=>array('product_id'=>212, 'price'=>333), 1=>array('product_id'=>212, 'price'=>333)) ), 1=>array('price'=>170, 'prices'=>array(0=>array('product_id'=>212, 'price'=>333), 1=>array('product_id'=>212, 'price'=>333)) )
  3. );


oczywiście może być tych danych wiecej

Ten post edytował jakis_login 26.10.2011, 09:17:35
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Ku mojemu zaskoczeniu*) taki zapis nie zadział:
  1. foreach($zmienna as $a => $b)
  2. {
  3. foreach($b['prices'] as $c => $d)
  4. {
  5. $d['pricevat'] = floatval($d['price'] * 1.23);
  6. }
  7. }

Jednak taki już tak:
  1. $i = 0;
  2. $o = 0;
  3. foreach($zmienna as $a => $b)
  4. {
  5. foreach($b['prices'] as $c => $d)
  6. {
  7. $zmienna[$o]['prices'][$i]['pricevat'] = $d['price'] * 1.23;
  8. $i++;
  9. }
  10. $o++;
  11. $i = 0;
  12. }


*) heh przecież foreach działa na kopii zmiennej

Ten post edytował darko 26.10.2011, 09:37:35
Go to the top of the page
+Quote Post
piotr.kazmiercza...
post
Post #7





Grupa: Zarejestrowani
Postów: 47
Pomógł: 10
Dołączył: 1.03.2010
Skąd: Warszawa

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


Dokładnie, więc trzeba by zrobić tak (referencja):

  1. foreach($zmienna as $a => &$b)
  2. {
  3. foreach($b['prices'] as $c => &$d)
  4. {
  5. $d['pricevat'] = floatval($d['price'] * 1.23);
  6. }
  7. }

Go to the top of the page
+Quote Post
jakis_login
post
Post #8





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

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


wieeeeeelkie dzieki darko, działa ok.

Wiem, ze tak się raczej nie robi ale czy jest szansa abyś pomógł mi jeszcze tylko zrobić gdy jest wyżej jeszcze jedna tablica np.

  1. $arr = array(
  2. 0=>array( 0=>array('price'=>170, 'prices'=>array(0=>array('product_id'=>212, 'price'=>'33,12'), 1=>array('product_id'=>212, 'price'=>'12,25')) ), 1=>array('price'=>170, 'prices'=>array(0=>array('product_id'=>212, 'price'=>333), 1=>array('product_id'=>212, 'price'=>333))) ),
  3.  
  4. 1=>array( 0=>array('price'=>170, 'prices'=>array(0=>array('product_id'=>212, 'price'=>'33,12'), 1=>array('product_id'=>212, 'price'=>'12,25')) ), 1=>array('price'=>170, 'prices'=>array(0=>array('product_id'=>212, 'price'=>333), 1=>array('product_id'=>212, 'price'=>333))) ));


czyli po print_r to wygląda tak:

  1. (
  2. [0] => Array
  3. (
  4. [0] => Array
  5. (
  6.  
  7. [price] => 36
  8. [prices] => Array
  9. (
  10. [0] => Array
  11. (
  12. [product_id] => 19531
  13. [threshold] => 1
  14. [price] => 36,00
  15. )
  16.  
  17. [1] => Array
  18. (
  19. [product_id] => 19531
  20. [threshold] => 5
  21. [price] => 34,20
  22. )
  23. // itd......


Z góry dziękuję
Go to the top of the page
+Quote Post
piotr.kazmiercza...
post
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 10
Dołączył: 1.03.2010
Skąd: Warszawa

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


Poprostu dodajesz kolejnego foreacha

  1. foreach($zmienna as $a => &$b){
  2. foreach($b as $key => &$value)
  3. {
  4. foreach($value['prices'] as $c => &$d)
  5. {
  6. $d['pricevat'] = floatval($d['price'] * 1.23);
  7. }
  8. }
  9. }
Go to the top of the page
+Quote Post
darko
post
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Dokładnie tak, jak podał ~piotr.kazmierczak i tylko pamiętaj, że separatorem dziesiętnym w php jest znak kropki (.), a nie przecinek.
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: 15.09.2025 - 17:35