Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmienna a referencja - UNSET
QPR
post 6.10.2014, 22:55:42
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.10.2014

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


  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?

Ten post edytował QPR 6.10.2014, 23:29:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Turson
post 7.10.2014, 06:27:55
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zamiast sprawdzać co chwilę czy jest null czy nie, czyść puste elementy
Go to the top of the page
+Quote Post
Pyton_000
post 7.10.2014, 07:42:40
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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);


Ten post edytował Pyton_000 7.10.2014, 07:43:01
Go to the top of the page
+Quote Post
QPR
post 7.10.2014, 12:00:12
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.10.2014

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


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
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: 14.08.2025 - 05:58