Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmienna a referencja - UNSET
Forum PHP.pl > Forum > PHP
QPR
  1. function funkcja(&$tablica){
  2. foreach($tablica as &$element){
  3. unset($element);
  4. }
  5. }
  6.  
  7. $tablica = array(...);
  8.  
  9. funkcja($tablica);

W linii 3ciej usunięta zostanie wyłącznie referencja/zmienna lokalna, zaś ja potrzebuję usunąć element ze zmiennej z linii 7mej.
Jak tego dokonać?
Zamiast użyć unset() mógłbym danemu elementowi przypisać NULL, ale wewnątrz funkcji w pętli foreach wykonuję pewne zmiany w tablicy i przy każdej iteracji pętli musiałbym sprawdzać warunek "if($element != NULL)", albo ew. po wykonaniu funkcji użyć innej, albo przelecieć znowu jakąś pętlą i usuwać wszystkie elementy NULL, ale wydaje mi się to nieeleganckim rozwiązaniem, że tak to ujmę.

Jakieś rady?
Turson
Zamiast sprawdzać co chwilę czy jest null czy nie, czyść puste elementy
Pyton_000
Możesz tak
  1. function test(&$tab)
  2. {
  3. foreach($tab as $key => $elem)
  4. {
  5. unset($tab[$key]);
  6. }
  7.  
  8. }
  9.  
  10. $tabl = array(1,2,3,4);
  11. test($tabl);
  12. var_dump($tabl);
QPR
Cytat(Pyton_000 @ 7.10.2014, 08:42:40 ) *
Możesz tak
  1. function test(&$tab)
  2. {
  3. foreach($tab as $key => $elem)
  4. {
  5. unset($tab[$key]);
  6. }
  7.  
  8. }
  9.  
  10. $tabl = array(1,2,3,4);
  11. test($tabl);
  12. var_dump($tabl);

Że też na to nie wpadłem, a żeby było śmieszniej to we wcześniejszym skrypcie robiłem to w ten sam sposób co podałeś.
Po prostu wydawało mi się że bez klucza sie tym razem obejdzie i odrazu $elem potraktuję UNSET'em.
Gdzie ja mózg podziałem.. ^^

Wielkie dzięki Panowie, tego właśnie szukałem. Można zamykać smile.gif
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.