Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]klucz tablicy
Forum PHP.pl > Forum > Przedszkole
Lonas
Hej - polaczylem dwie tablice w jedna array_marge

jaka funkcja sluzy do tego zeby od nowa poindeksowac ta tablice ?

zeby klucze lecialy od 0
lopez86
napisz taka funkcję heh (pewnie juz jest ) ale ja nie znam szybciej bedzie jak sam sobie napiszesz - przecież to jedna pętla i po sprawie
Lonas
No nie jest chyba tak prosto a pamietam ze byla jakas funkcja

polaczylem 4 tabele w ktorych dane sie powtarzaly

powstala mi jedna duza w ktorej przesialem dane z 300 elementow zostalo mi 120 - ale np 90 element ma indeks 290 ..
Kamson
sort()
lopez86
jaka jest struktura tablicy questionmark.gif jedno dwu czy więcej wymiarowa questionmark.gif

do usuniecia duplikatów służy
  1. <?php
  2. array_unique($tarray[1]);
  3. ?>
co do zmiany kluczy to zalezy ilu jest wymiarowa itd ale i tak w ciagu 15 - 20 minut da się napisać taka funkcję : )
Lonas
Zwykla dwuwymiarowa tablica



Kamson nie chce sortowac wartosci tylko klucze..
Lonas
Też nie..

W tablicy brakuje mi kluczy bo po wywaleniu powtarzajacych sie pozostaly pustki
chodzi o to zeby przeindeksowac tablice na nowo
lopez86
rzeczywiśie teraz jak zacząłem pisać to nie jest to takie proste jak sie wydawało tongue.gif

ale widzę rozwiazanie ale musisz potestować


array_combine();

stworzysz nową tablicę z wartościami starej ale z nowymi kluczami tylko jak sądzę po budowie funkcji ilość elementów musi się zgadzać , jak nie zadziała bdziemy myśleć dalej smile.gif
Lonas
Ok sprobuje zrobie 2 tabele z wartoscami takimi jakie powinny byc klucze i polacze

no tak.. ale ta funkcja chyba dziala dopiero w php 5..a ja takiego nie mam smile.gif

ok mam..

  1. <?php
  2. function my_array_unique($from) {
  3. for ($i=count($from)-1;$i>1;$i--) {
  4. $last = $from[$i];
  5. $from[$i] = false;
  6. if (!in_array($last,$from)) {
  7. $from[$i]=$last;
  8. }
  9. }
  10. $from = array_unique($from);
  11. $from = array_slice($from,0,count($from)-1);
  12. return $from;
  13. }
  14. ?>
lopez86
  1. <?php
  2. $array - zla tablica
  3.  
  4. $j=0;
  5. for($r=0;$r<count($array);$r++){
  6.  
  7. if(isset($array[$r])) $nowy[$j]=$array[$r]; $j++;
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15. }
  16.  
  17. tylko mam nadzieję że funkcja count nie policzy nie istniejacych elementów bo jesli tak to wtedy policz je np. na podstawie długości wartosci jaką zawiera dany element czyli
  18.  
  19. $r=0;
  20.  
  21. $m=0;
  22. while(isset($array[$r])){
  23.  
  24.  
  25. if(strlen($array[1])>0) $m++;
  26.  
  27.  
  28.  
  29. $r++;
  30. }
  31.  
  32.  
  33. i wtedy w pierwszej pętli zamiast count($array) daj $m
  34. ?>





Niczego nie testowałem więc nic nie gwarantuję tongue.gif

Ok ale widze że sobie poradziłeś hehe smile.gif tongue.gif
webdice
Troche przekombinowaliście smile.gif

  1. <?php
  2.  
  3. $arr = array
  4. (
  5. 0 => 'val_1',
  6. 4 => 'val_2',
  7. 5 => 'val_3',
  8. 9 => 'val_4',
  9. 12 => 'val_5',
  10. 19 => 'val_6',
  11. );
  12.  
  13. foreach ($arr as $key => $value)
  14. {
  15. $_tmp_arr[] = $arr[$key]; 
  16. }
  17.  
  18. $arr = $_tmp_arr;
  19.  
  20. unset ($_tmp_arr);
  21.  
  22. print_r ($arr);
  23.  
  24. ?>
Kicok
Cytat("webdicepl")
Troche przekombinowaliście smile.gif


No nie? ;]


array_values" title="Zobacz w manualu PHP" target="_manual
Dla tablicy jednowymiarowej wystarczy tylko ta funkcja:
  1. <pre>
  2. <?php
  3.  
  4.  
  5. $array = array( 1 => 'test1',
  6. 2 => 'test2',
  7. 4 => 'test4',
  8. 7 => 'test5'
  9. );
  10.  
  11.  
  12. $array = array_values( $array );
  13. print_r( $array );
  14.  
  15. ?>
  16. </pre>



A jeśli jest to tablica dwuwymiarowa (tak jak napisał Loans w którymś poście powyżej) i wszystkie klucze mają zostać przeindeksowane, to trzeba to będzie połączyć jeszcze z funkcją array_map" title="Zobacz w manualu PHP" target="_manual:
  1. <pre>
  2. <?php
  3.  
  4.  
  5. $array = array( 1 => array( 1 => 'subtest1', 3 => 'subtest2', 10 => 'subtest3' ),
  6. => array( 1 => 'subtest1', 3 => 'subtest2', 10 => 'subtest3' ),
  7. => array( 1 => 'subtest1', 3 => 'subtest2', 10 => 'subtest3' ),
  8. => array( 1 => 'subtest1', 3 => 'subtest2', 10 => 'subtest3' )
  9.  
  10. );
  11.  
  12.  
  13. $array = array_values( array_map( 'array_values', $array ) );
  14. print_r( $array );
  15.  
  16. ?>
  17. </pre>
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.