Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] usniecie pustych elementow w tablicy
Forum PHP.pl > Forum > Przedszkole
Gość_beny_*
Witam,
Korzystam z funkcji array_unique dzieki czemu pozbywam sie powtarzajacych elementow. Problem jest w tym, ze chcialbym miec tablice , ktorej indeks nie zawiera pustych elementow (po usunieciu przez array_unique element zostaje pusty). Czy istnieje funkcja, ktora usunie mi puste elementy z tablicy? Czy musze "przejechac" cala tablice wlasna funcja?
np:
tab[0]='1'
tab[1]='1'
tab[2]='2'
tab[3]='3'
po array_unique mamy:
tab[0]='1'
tab[1]=''
tab[2]='2'
tab[3]='3'
a zalezy mi aby tab wygladala tak
tab[0]='1'
tab[1]='2'
tab[2]='3'
Ja_Szczur
  1. <?php
  2. $tab[0] = '1';
  3. $tab[1] = '1';
  4. $tab[2] = '2';
  5. $tab[3] = '3';
  6.  
  7. $tab2 = array_unique( $tab );
  8. $tab3 = array_values( $tab2 );
  9.  
  10. print_r( $tab );
  11. print_r( $tab2 );
  12. print_r( $tab3 );
  13. ?>


[sposób ukazany krok po kroku, nie trzeba tworzyć tablic $tab2 i $tab3, wystarczy $tab]
Gość
Cytat(Ja_Szczur @ 12.08.2006, 16:54 ) *
[sposób ukazany krok po kroku, nie trzeba tworzyć tablic $tab2 i $tab3, wystarczy $tab]

amen WIELKIE dzieki smile.gif
Gość_beny_*
Pojawilo mi sie jeszcze jedno pytanie... odwrotne smile.gif
Mam tablice i jak pozostawic w tej tablicy tylko powtarzajace sie elementy? Tez while nie chce calej przejezdzac. Czyli szukam odrotnej funkcji niz array_unique.
np:
tab[0] = '1'
tab[1] = '1'
tab[2] = '2'
tab[3] = '3'
po operacji mam miec:
tab[0] = '1'
Ten efekt uzyskam dzieki array_values ale najpierw trzeba dojsc do takiego stanu
tab[0] = '1'
tab[1] = '1'
Dzieki za podpowiedz
pozdrawiam
BENY
lukir
Zrób lepiej tak:
  1. <?php
  2. //tablica...
  3. $tab[0] = 1;
  4. $tab[1] = 2;
  5. $tab[2] = 3;
  6. $tab[3] = 1;
  7. $tab[4] = 1;
  8.  
  9. $values = array_count_values($tab);
  10. $tab = array();
  11.  
  12. //$values[1] zwróci 3 (3 wystąpienia '1')
  13. for($i=0; $i<$values[1], $i++) { 
  14. $tab[$i] = 1;
  15. }
  16.  
  17. //powyższa tablica będzie wyglądać tak (ale to bez sensu, jeżeli chcesz mieć $tab[0] = 1):
  18. $tab[0] = 1;
  19. $tab[1] = 1;
  20. $tab[2] = 1;
  21.  
  22. //więc najlepiej będzie tak:
  23. if(in_array('1', $tab)) {
  24. $tab[0] = 1;
  25. }
  26. ?>

i tyle, ale nie wiem, jakie to będzie miało zastosowanie...
Gość_beny_*
Okazuje sie ze w tym wypadku chcialem przekombinowac... Potrzebuje czesci wspolnej dwoch tablic i wlasnie znalazlem array_intersect - chyba bedzie pieknie dzialalo (?)
A wczesniej pytalem o takie rozwiazanie bo - mialem dwie tablice, laczylem je, i chcialem wyszukac powtarzajacych sie elementow. Tylko ze to to samo co czesc wspolna tych dwoch tablic smile.gif a nie pomyslalem ze taka funkcja moze byc.
Dzieki
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.