skanuj0157 (11)

skanuj0157 (11)



168 PHP i MySQL dla każdego

Ponieważ porządkowanie leksykograficzne nie zawsze daje wyniki zgodne z intuicją człowieka, w PHP4 wprowadzono dodatkowe funkcje, które umożliwiają porównywanie zgodne z tzw. porządkiem naturalnym (ang. natural order). Są to strnatcmp i strnatca-secmp. Ich działanie jest analogiczne do funkcjonowania omawianych wyżej funkcji, z tą różnicą, że wykorzystywany jest inny algorytm porównujący. Zaleta porządkowania naturalnego ujawni się np. w sytuacji, kiedy będziemy sortować nazwy plików zawierających ich numery; ilustruje to kod widoczny na listingu 6.9.

Listing 6.9. Wykorzystanie funkcji strcmp i strnatcmp do sortowania ciągów

<?php

Iplikil = $pliki2 - array(

"pl1k2.zip".

"plikl0.zip".

"plik84.zip".

"plik22.zip".

"plik5.zip"

):

echoCPrzed sortowaniem:<br>"); foreach($pli ki 1 as Splik) echo("$plik "); usort($plikil. "strcmp"):

echo("<br><br>Po sortowaniu z użyciem strcmp:<br>“); foreach($plikil as Splik) echoCSpUk "): usort($pliki2. "strnatcmp");

echo("<br><br>Po sortowaniu z użyciem strnatcmp:<br>"): foreach<Spliki2 as Splik) echoCSplik ");

Przykładowe nazwy plików zostały zapisane w tablicy, a następnie posortowane na dwa różne sposoby. Efekt działania skryptu obrazuje rysunek 6.8. W pierwszej kolejności została wyświetlona zawartość tablicy przed sortowaniem — poszczególne elementy są nieuporządkowane. Następnie zostały wyświetlone wyniki sortowania, w którym jako funkcję porównującą wykorzystano funkcję strcmp (por. opis funkcji usort w rozdziale 4.), oraz wyniki sortowania, w którym jako funkcja porównująca została użyta funkcja strnatcmp. Różnica między porządkiem leksykograficznym a naturalnym jest tu bardzo wyraźna.

Rysunek 6.8.

Różnice między porządkiem leksykograficznym a naturalnym


joijsI

0* Edycja SSdak Przełaź JakJa*l Sarzpdzia Pcmcę

-    - & r> | *tp:Mocalho5<,««.php    ^ © Idź |j&

# Rozpocznij przygód... C Sktualno&l

Przed sortowaniem:

plik2.zip plikl0.zip plik84.zip plik22.zip plik5.zip

Po sortowaniu z użyciem strcmp: plikl0.zip plik2.zip plik22.zip plik5.zip plik84.zip

Po sortowaniu z użyciem strnatcmp: plik2.zip plik5.zip plikl0.zip plik22.zip plik84.zip


Wyszukiwarka

Podobne podstrony:
skanuj0159 (11) 170 PHP i MySQL dla każdego lewej stronie występuje typ całkowity, a po prawej stron
skanuj0165 (11) 176_PHP i MySQL dla każdego Tabela 6.3. Znaczniki formatujące dla funkcji
skanuj0167 (11) 178 PHP i MySQL dla każdego Zwrócona tablica zawiera następujące klucze: ♦  &nb
skanuj0153 (11) 164 PHP i MySQL dla każdego 164 PHP i MySQL dla każdego Rysunek 6.5. Efekt działania
skanuj0165 (11) 176_PHP i MySQL dla każdego Tabela 6.3. Znaczniki formatujące dla funkcji
18125 skanuj0159 (11) 170 PHP i MySQL dla każdego lewej stronie występuje typ całkowity, a po prawej
53147 skanuj0167 (11) 178 PHP i MySQL dla każdego Zwrócona tablica zawiera następujące klucze: ♦ &nb
38295 skanuj0169 (11) 180 PHP i MySQL dla każdego ♦    tm_sec — liczba sekund, ♦ &nbs
skanuj0013 (331) 24 PHP i MySQL dla każdego Znaczniki kanoniczne są rozpoznawane zawsze, niezależnie
79084 skanuj0104 (28) 116 PHP i MySQL dla każdego 116 PHP i MySQL dla każdego Rysunek 4.11. Zawartoś
skanuj0017 (284) 28 PHP i MySQL dla każdego dla systemu Linux i: include path = :c:phpincludes"

więcej podobnych podstron