Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]klucz tablicy
Lonas
post
Post #1





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Hej - polaczylem dwie tablice w jedna array_marge

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

zeby klucze lecialy od 0
Go to the top of the page
+Quote Post
lopez86
post
Post #2





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


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
Go to the top of the page
+Quote Post
Lonas
post
Post #3





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


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 ..
Go to the top of the page
+Quote Post
Kamson
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 23.10.2006
Skąd: Warszawa

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


sort()
Go to the top of the page
+Quote Post
lopez86
post
Post #5





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


jaka jest struktura tablicy (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) jedno dwu czy więcej wymiarowa (IMG:http://forum.php.pl/style_emoticons/default/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ę : )
Go to the top of the page
+Quote Post
Lonas
post
Post #6





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Zwykla dwuwymiarowa tablica



Kamson nie chce sortowac wartosci tylko klucze..
Go to the top of the page
+Quote Post
webdice
post
Post #7


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




ksort" title="Zobacz w manualu PHP" target="_manual lub krsort" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
Lonas
post
Post #8





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Też nie..

W tablicy brakuje mi kluczy bo po wywaleniu powtarzajacych sie pozostaly pustki
chodzi o to zeby przeindeksowac tablice na nowo
Go to the top of the page
+Quote Post
lopez86
post
Post #9





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


rzeczywiśie teraz jak zacząłem pisać to nie jest to takie proste jak sie wydawało (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Lonas
post
Post #10





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował Lonas 10.06.2007, 17:55:31
Go to the top of the page
+Quote Post
lopez86
post
Post #11





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


  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ę (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ok ale widze że sobie poradziłeś hehe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował lopez86 10.06.2007, 17:56:47
Go to the top of the page
+Quote Post
webdice
post
Post #12


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Troche przekombinowaliście (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował webdicepl 10.06.2007, 17:59:13
Go to the top of the page
+Quote Post
Kicok
post
Post #13





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat("webdicepl")


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>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:14