Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nazwa tablicy w tablicy
Forum PHP.pl > Forum > PHP
daniel1302
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
230005
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.
daniel1302
To jak mogę zostawić $arr2[0] nieruszone? Może rozwiązanie proste ale głowie sie nad tym 4 godziny
230005
Może nie zmieniając wartości arr2[0]? Bo to właśnie robisz w tym kodzie wyżej...
daniel1302
Ale wartość $arr2[0] zmienia się( zmieniają się zmienne). więc muszę takie coś robić
phpion
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'];
daniel1302
ale wtedy zamiast $arr['imie'] będzie się zmieniać tylko $arr2[0]
phpion
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.
230005
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 smile.gif.
daniel1302
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'] )
230005
$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
daniel1302
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. }
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.