Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nazwa tablicy w tablicy
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Witam, mam taki skrypt
  1. $arr = array('imie' => 'Jan', 'nazwisko' => 'Kowalski');
  2. $arr2[] =& $arr['imie'];
  3. $arr2[0] = 'Kamil';
  4. print_r($arr);
  5. echo '<br /><br />';
  6. print_r($arr2);


i skrypt działa bo $arr['imie'] zmienia sie na Kamil
ale $arr2[0] zmienia się tez z $arr['imie'] na Kamil
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
230005
post
Post #2





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Bo arr2 jest referencją do arr. To właśnie oznacza ten znak &. Nie skopiowałeś imienia do arr2, tylko zapisałeś w tej zmiennej odwołanie. Dlatego wartość zmienia się wszędzie.
Go to the top of the page
+Quote Post
daniel1302
post
Post #3





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


To jak mogę zostawić $arr2[0] nieruszone? Może rozwiązanie proste ale głowie sie nad tym 4 godziny
Go to the top of the page
+Quote Post
230005
post
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Może nie zmieniając wartości arr2[0]? Bo to właśnie robisz w tym kodzie wyżej...
Go to the top of the page
+Quote Post
daniel1302
post
Post #5





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Ale wartość $arr2[0] zmienia się( zmieniają się zmienne). więc muszę takie coś robić
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(230005 @ 10.09.2009, 19:50:14 ) *
Bo arr2 jest referencją do arr. To właśnie oznacza ten znak &. Nie skopiowałeś imienia do arr2, tylko zapisałeś w tej zmiennej odwołanie. Dlatego wartość zmienia się wszędzie.

Czyli wywal &. Zmień:
  1. $arr2[] =& $arr['imie'];

na:
  1. $arr2[] = $arr['imie'];
Go to the top of the page
+Quote Post
daniel1302
post
Post #7





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


ale wtedy zamiast $arr['imie'] będzie się zmieniać tylko $arr2[0]
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No to zamiast:
  1. $arr2[0] = 'Kamil';

zmień sobie $arr['imie'] czyli:
  1. $arr['imie'] = 'Kamil';

Jeżeli nie o to ci chodzi to ja już nie wiem o co. Tak namieszałeś, że głowa mała.
Go to the top of the page
+Quote Post
230005
post
Post #9





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Odnoszę wrażenie, że sam do końca nie wiesz co chcesz tym kodem zrobić i co ten kod według ciebie robi...

Cytat
To jak mogę zostawić $arr2[0] nieruszone?


Cytat
Ale wartość $arr2[0] zmienia się( zmieniają się zmienne). więc muszę takie coś robić


Napisz najprościej jak potrafisz co chcesz zrobić, bo teraz chyba się nie rozumiemy (IMG:style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
daniel1302
post
Post #10





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Teraz po wywołaniu print_r obu zmiennych mam
Kod
Array ( [imie] => Kamik [nazwisko] => Hornik )

Array ( [0] => Kamik )


A chcę
Cytat
Array ( [imie] => Kamik [nazwisko] => Hornik )

Array ( [0] => $arr['imie'] )
Go to the top of the page
+Quote Post
230005
post
Post #11





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


$zmienna = ${$twoja_zmienna}

Nie wiem czy zadziała, bo nie sprawdzałem. Google: 'php nazwa zmiennej'. Wyszło mi za drugą próbą: http://forum.php.pl/index.php?showtopic=73768 http://www.php.net/manual/pl/language.variables.variable.php http://www.google.pl/#hl=pl&q=php+nazw...d2039350df5af21

Ten post edytował 230005 12.09.2009, 16:56:28
Go to the top of the page
+Quote Post
daniel1302
post
Post #12





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Witam, masz plusa za help. Podaje skrypt do którego było mi to potrzebne działa już

  1. //Wynik
  2. $result = array();
  3.  
  4. //Poziomy
  5. $levels = array();
  6. $lv = -1;
  7. foreach ($xmlSampleArray as $xml)
  8. {
  9. //Podnieś o level
  10. if ($xml['type'] == 'open')
  11. {
  12. if (count($levels) < 1)
  13. {
  14. $levels[] =& $result[$xml['tag']];
  15. }
  16. else
  17. {
  18. $levels[] =& $levels[$lv][$xml['tag']];
  19. }
  20. $lv++;
  21. }
  22. elseif($xml['type'] == 'close')
  23. {
  24. $lv--;
  25. }
  26. elseif ($xml['type'] == 'complete')
  27. {
  28. $levels[$lv][$xml['tag']] =& $xml['value'];
  29. }
  30. }


Ten post edytował daniel1302 12.09.2009, 19:16:04
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: 24.08.2025 - 00:50