Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie tablicy ...
Nosfi
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 13.10.2004
Skąd: Świnoujście

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


Witka,

Mam problem z sortowaniem tablicy.

Tablica wygląda następująco:
  1. <?php
  2.  
  3. $tablica = array(&#092;"1\",\"10\",\"11\", ... ,\"2\",\"20\",\"21\",\"22\", ... ,\"5\",\"50\",\"51\",\"52\", ...);
  4.  
  5. ?>

normalne wyświetlenie jej poprzez pętle przy użyciu funkcji SORT
  1. <?php
  2.  
  3. rsort($tablica);
  4. for($i = 1; $i <= sizeof($tablica); $i++) echo $tablica[$i - 1] . '';
  5.  
  6. ?>

daje wynik:
52 51 50 5 ... 22 21 20 2 ... 11 10 1

a ja chciałbym uzyskać wynik:
52 51 50 ... 22 21 20 ... 11 10 ... 5 ... 2 1

Skrypt służy sprawdzaniu zawartości danego katalogu i segregacji plików.
Zaznaczam od razu, iż numeracja plików w postacji 000x nie wchodzi w grę.

Pozdrowionka z wysp ...


--------------------
<?php $Sign=Show->ToMe('Nie ma to jak zimny prysznic'); ?>
<span style="font-weight: bold;">Tools:</span> XAMPP | PHP 5 | MySQL 5 | Notepad++
Go to the top of the page
+Quote Post
.dragonfly
post
Post #2





Grupa: Zarejestrowani
Postów: 217
Pomógł: 0
Dołączył: 5.10.2003
Skąd: Londyn / UK

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


Moze tak?
  1. <?php
  2.  
  3. $tablica = array(&#092;"1\",\"10\",\"11\", ... ,\"2\",\"20\",\"21\",\"22\", ... ,\"5\",\"50\",\"51\",\"52\", ...);
  4. natsort( $tablica );
  5. print_r ( $tablica );
  6.  
  7. ?>
Go to the top of the page
+Quote Post
Nosfi
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 13.10.2004
Skąd: Świnoujście

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


No niestety, ale nie.

Po zapętleniu
  1. <?php
  2.  
  3. $tablica = array(&#092;"1\",\"10\",\"11\",\"2\",\"20\",\"21\",\"22\",\"5\",\"50\",\"51\",\"52\");
  4.  
  5. natsort($tablica);
  6.  
  7. for($i = 1; $i <= sizeof($tablica); $i++) echo $tablica[$i - 1] . '<br>';
  8.  
  9. ?>

wynik ciągle nie jest taki jak powinien ...

natomiast:
  1. <?php
  2.  
  3. print_r ( $tablica );
  4.  
  5. ?>


daje nam w rezultacie ...

  1. Array ( [0] => 1 [3] => 2 [7] => 5 [1] => 10 [2] => 11 [4] => 20 [5] => 21 [6] => 22 [8] => 50 [9] => 51 [10] => 52 )


--------------------
<?php $Sign=Show->ToMe('Nie ma to jak zimny prysznic'); ?>
<span style="font-weight: bold;">Tools:</span> XAMPP | PHP 5 | MySQL 5 | Notepad++
Go to the top of the page
+Quote Post
.dragonfly
post
Post #4





Grupa: Zarejestrowani
Postów: 217
Pomógł: 0
Dołączył: 5.10.2003
Skąd: Londyn / UK

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


To moze tak biggrin.gif

  1. <?php
  2.  
  3.  
  4. $tablica = array ( &#092;"1\", \"12\", \"1010\", \"150\", \"5\", \"50\", \"550\" );
  5.  
  6. natsort($tablica);
  7. $arr = array_reverse($tablica, true);
  8.  
  9.  
  10.  
  11. ?>
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Jak masz tak :
  1. <?php
  2.  
  3. $tablica = array(&#092;"1\",\"10\",\"11\", ... ,\"2\",\"20\",\"21\",\"22\", ... ,\"5\",\"50\",\"51\",\"52\", ...);
  4.  
  5. ?>

to sortujesz stringi i nic dziwnego że dostajesz :
Cytat
52 51 50 5 ... 22 21 20 2 ... 11 10 1


Jak dasz tak :
  1. <?php
  2.  
  3. $tablica = array(1,10,11, ... ,2,20,21,22, ... ,5,50,51,52, ...);
  4.  
  5. ?>

to posortujesz liczby i dostaniesz :
Cytat
52 51 50 ... 22 21 20 ... 11 10 ... 5 ... 2 1

czyli to czego oczekujesz.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. <?php
  2. function cmp( $a, $b ) 
  3. {
  4. // sortujesz liczby calkowite, nie stringi
  5. $a = intval( $a );
  6. $b = intval( $b );
  7.  
  8. if ( $a === $b )
  9. {
  10. return 0;
  11. }
  12.  
  13. return ( $a < $b ) ? -: 1;
  14. }
  15.  
  16. $tablica = array( &#092;"1\", \"10\", \"11\", \"2\", \"20\", \"21\", \"22\", \"5\", \"50\", \"51\", \"52\" );
  17.  
  18. print( 'Przed sortowaniem: <br />' );
  19.  
  20. foreach ( $tablica as $element )
  21. {
  22. print( &#092;"$element<br />\" );
  23. }
  24.  
  25. usort( $tablica, &#092;"cmp\" );
  26.  
  27.  
  28. print( 'Po sortowaniu: <br />' );
  29.  
  30. foreach ( $tablica as $element )
  31. {
  32. print( &#092;"$element<br />\" );
  33. }
  34. ?>


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Nosfi
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 13.10.2004
Skąd: Świnoujście

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


OK.

O to właśnie chodziło ... dzięki dr_bonzo!


--------------------
<?php $Sign=Show->ToMe('Nie ma to jak zimny prysznic'); ?>
<span style="font-weight: bold;">Tools:</span> XAMPP | PHP 5 | MySQL 5 | Notepad++
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 Aktualny czas: 19.08.2025 - 02:24