PHP

PHP jest obiektowym, skryptowym jezykiem programowania zaprojektowanym do tworzenia dynamicznych stron www.


Funkcje PHP

Oficjalna strona PHP

Dodatkowe aplikacje PHP

Dodatkowe modu³y PHP

Wortal PHP
bielizna - Noclegi - ogrzewanie elektryczne - Mieszkania Poznań - Backstreet Boys - piosenki - Fajerwerki


array_multisort

array_multisort

(PHP 4, PHP 5)

array_multisort -- Sortuje wiele tablic lub wielowymiarowe tablice

Opis

bool array_multisort ( array tbl1 [, mixed arg [, mixed ... [, array ...]]] )

Zwraca TRUE w przypadku sukcesu, FALSE w przypadku porażki.

array_multisort() może być użyta do sortowania kilku tablic na raz lub wielowymiarowej tablicy na podstawie jednego z większej liczby wymiarów.

Klucze asocjacyjne są zachowywane, a indeksy numeryczne są przenumerowywane.

Tablice wejściowe są traktowane jak kolumy tablicy, które mają być posortowane wierszami - odpowiada to funkcjonalności warunku SQL ORDER BY. Pierwsza tablica jest tablicą priorytetową do sortowania. Wiersze (wartości) w tej tablicą które są takie sane sortowane są według następnej tablicy wejściowej i tak dalej.

Struktura argumentów tej funkcji nie jest zwyczajna, ale jest ona elastyczna. Pierwszy argument musi być tablicą. Każdy następny argument musi być tablicą lub flagą oznaczającą porządek sortowania - jeden z poniższych.

Flagi porządku sortowania:

Flagi typu sortowania:

Nie można podać żadnych dwóch flag tego samego typu dla jednej tablicy. Flagi sortowania podane po argumencie-tablicy dotyczą tylko tej tablicy - są one zerowane do domyślnych wartośći SORT_ASC i SORT_REGULAR po każdym argumencie tablicowym.

Zwraca TRUE w przypadku sukcesu, FALSE w przypadku porażki.

Przykład 1. Sortowanie wielu tablic

<?php
$tbl1
= array ("10", 100, 100, "a");
$tbl2 = array (1, 3, "2", 1);
array_multisort ($tbl1, $tbl2);

var_dump($tbl1);
var_dump($tbl2);
?>

W tym przypadku, po sortowaniu, pierwsza tablica będzie zawierać 10, "a", 100, 100, a druga 1, 1, "2", 3. Elementy drugiej tablicy odpowiadające identycznym elementom pierwszej tablicy (100 i 100) także zostały posortowane.

array(4) {
  [0]=> string(2) "10"
  [1]=> string(1) "a"
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(1)
  [1]=> int(1)
  [2]=> string(1) "2"
  [3]=> int(3)
}

Przykład 2. Sortowanie wielowymiarowych tablic

$tbl = array (
      array ("10", 100, 100, "a"),
      array (1, 3, "2", 1)
   );
array_multisort ($tbl[0], SORT_ASC, SORT_STRING,
         $tbl[1], SORT_NUMERIC, SORT_DESC);
var_dump($tbl);
?>

W tym przykładzie, po posortowaniu, pierwsza tablica przekształci się do postaci "10", 100, 100, 11, "a" (została posortowana jako ciągi znakowe w porządku rosnącym). Druga tablica będzie zawierała elementy 1, 3, "2", 2, 1 (sortowanie liczbowe w porządku malejącym).

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Przykład 3. Sortowanie wyników zapytań do baz danych

Dla tego przykładu, każdy element tablicy dane reprezentuje pojedynczy wiersz z tabeli. Ten typ danych jest typowy dla rekordów baz danych.

Przykładowe dane:

Numer | edycja 
-------+--------
   67 |      2
   86 |      1
   85 |      6
   98 |      2
   86 |      6
   67 |      7

Dane zawarte są w tablicy o nazwie dane. Efekt ten można uzyskać, na przykład, poprzez wywołując w pętli funkcję mysql_fetch_assoc().

<?php
$dane
[] = array('numer' => 67, 'edycja' => 2);
$dane[] = array('numer' => 86, 'edycja' => 1);
$dane[] = array('numer' => 85, 'edycja' => 6);
$dane[] = array('numer' => 98, 'edycja' => 2);
$dane[] = array('numer' => 86, 'edycja' => 6);
$dane[] = array('numer' => 67, 'edycja' => 7);
?>

W tym przykładzie, dane zostaną posortowane według pola numer malejąco, oraz względem pola edycja rosnąco.

W zmiennej znajduje się tablica wierszy, lecz array_multisort() wymaga tablicy kolumn, tak więc należy zastosować poniższy kod aby uzyskać kolumny, a następnie przeprowadzić sortowanie.

<?php
// Pobierz listę kolumn
foreach ($dane as $klucz => $wiersz) {
    
$numer[$klucz]  = $wiersz['numer'];
    
$edycja[$klucz] = $wiersz['edycja'];
}

// Posortuj dane według numeru malejąco i edycji rosnąco
// Należy podać $dane jako ostatni parametr aby posortować według wspólnego
// klucza
array_multisort($numer, SORT_DESC, $edycja, SORT_ASC, $dane);
?>

Zbiór danych jest teraz posortowany. Wygląda on tak:

numer | edycja
------+--------
   98 |      2
   86 |      1
   86 |      6
   85 |      6
   67 |      2
   67 |      7

Przykład 4. Sortowanie z ignorowaniem wielkości znaków

Obie opcje, SORT_STRING i SORT_REGULAR, powodują sortowanie z rozróżnianiem wielkości znaków. Ciągi zaczynające się od dużej litery staną się ciągami zaczynającymi się od litery małej.

Aby przeprowadzić sortowanie ignorujące wielkość znaków, należy wymusić, aby porządek sortowania był określany przez kopię oryginalnej tablicy, w której wszystkie znaki zostaną zmienione na małe.

<?php
$tablica
= array('Alfa', 'atomowy', 'Beta', 'bank');
$tablica_male = array_map('strtolower', $tablica);

array_multisort($tablica_male, SORT_ASC, SORT_STRING, $tablica);

print_r($tablica);
?>

Powyższy przykład wyświetli:

Array
(
    [0] => Alfa
    [1] => atomowy
    [2] => bank
    [3] => Beta
)

Limo and Car services Airport chicago limousine service 773-649-9630 - Limo and Car services limousine service Airport chicago 773-649-9630 - Firma Procreate oferuje skuteczne pozycjonowanie z gwarancja TOP10 - Faktorowanie Faktury Program - Sklep komputerowy - umts - Limo and Car services chicago limos service 773-649-9630 - Optymalizacja i pozycjonowanie poznań w internecie. - Bardzo smutne opisy na gg - Najlepsze pionowe opisy gg do Twojego komunikatora - (630) 839-9149 limo naperville ohare Naperville limo - Mp3 za darmo - Wypożyczalnia wynajem samochodów pyrzowice Lotnisko - gotseoweb - odzyskiwanie danych Poznań

G:13,M:0,Y:22