Centrum Społeczności
Advertisement
Rozszerzenie jest domyślnie wyłączone, ale może być dostępne na żądanie.

Arrays (pol. Tablice) to rozszerzenie definiuje następujące funkcje parsera:

Grupa Funkcja
Tworzenie tablicy, (z opcjami: unikalny (unique), sortuj (sort), drukuj (print)) #arraydefine
Wyświetlenie informacji z tablicy #arrayprint, #arrayindex, #arraysize, #arraysearch, #arraysearcharray i #arrayslice
Zmienianie tablicy #arrayreset, #arrayunique i #arraysort
Interakcja pomiędzy kilkoma tablicami #arraymerge, #arrayunion, #arrayintersect i #arraydiff

Konstrukcja[]

arraydefine[]

Ta funkcja tworzy tablicę (wskazaną przez 'klucz') używając listy 'wartości' rozdzielonych przez 'separator'. Zmienna może być dostępna później dla pozostałych funkcji.

Składnia:

{{#arraydefine:klucz|wartości|separator|opcje}}

Notatki:

  • wartości są listą łańcuchów znaków rozdzielonych separatorem.
  • Wynik tablicy jest tablicą łańcuchową.
  • Domyślnym separatorem jest ',' jeżeli inny nie został zdefiniowany, separator (i) może być łańcuchem znaków (białe znaki otaczające separator są obcinane) lub (ii) wyrażeniami regularnymi Perla (tylko dla zaawansowanych), np. '/\s*,\s*/' (zobacz preg_split).
  • Użytkownicy mogą zdefiniować pustą tablicę (zobacz przykład).
  • Użytkownicy mogą określić opcję: unikalną (unique), sortowania (sort) i drukowania (print) (zobacz przykład).

Przykłady:

Zdefiniowanie jednego elementu tablicy nazwanego 'a'
{{#arraydefine:a|czerwony}}
Zdefiniowanie czterech elementów tablicy nazwanych 'b', używając domyślnego separatora (',')
{{#arraydefine:b|pomarańczowy,czerwony ,żółty, żółty}}
Zdefiniowanie/wybranie pustej tablicy nazwanej 'c'
{{#arraydefine:c}}
Zdefiniowanie jednego elementu tablicy nazwanego 'd', nie używając separatora
{{#arraydefine:d|jabłko, gruszka}}
Zdefiniowanie jednego elementu tablicy nazwanego 'e', używając ';' jako separatora
{{#arraydefine:e|jabłko, gruszka|;}}
(Dla zaawansowanych) Zdefiniowanie trzech elementów tablicy nazwanych 'f', używając '/\s*[;,]\s*/' jako separatora
{{#arraydefine:f|jabłko, gruszka;  pomarańczowy|/\s*[;,]\s*/}}
Zdefiniowanie trzech elementów tablicy nazwanych 'b1', używając separatora (','), opcji "unique ,sort=desc, print=list" (elementy tablicy są unikalne, sortowane malejąco i będące drukowane). Dla większej ilości opcji wartości "sort" zobacz #arraysort
{{#arraydefine:b|pomarańczowy,czerwony ,żółty, żółty|,|unique,sort=desc, print=list}}

Wyświetlanie informacji[]

arrayprint[]

Ta funkcja drukuje wartości tablicy w określonym formacie.

Składnia:

{{#arrayprint:klucz|separator|wzorzec|zawartość|opcje}}

Notatki:

  • 'zawartość' akceptuje linki, szablony i funkcje parsera.
  • W ciągu 'zawartość' nie można używać znaku '|'! W całej konstrukcji wzorzec będzie wyszukiwany i zastąpiony z obecną (wyjściową) wartością tablicy w każdej pętli. Ostatecznie cały ciąg będzie analizowany i umieszczony w tablicy wyników, która zostanie rozdzielona separatorem.
  • W przypadku tablicy, która powinna być drukowana, ale nie istnieje, zostanie zwrócony pusty ciąg znaków.
  • Domyślny separator jest zależny od języka, dla angielskiego jest to ', '.

Przykłady:

Drukuj - używając zależnego od języka separatora
{{#arrayprint:b}}
Drukuj - wyłączając separator
{{#arrayprint:b | }}
Drukuj - używając '<br/>' (line-break) jako separatora
{{#arrayprint:b |<br/> }}
Ładna wyjściowa lista, gdzie dwa ostatnie elementy są połączone ' i ' (lub odpowiednikiem w danym języku). Jeżeli separator będzie pusty, ', ' (lub odpowiednik w innym języku) zostanie wykorzystany, ponieważ lista nie mogła by zostać wydrukowana za pomocą opcji pretty.
{{#arrayprint:b ||@ |@ |print=pretty }}
Wbudowany link do kategorii
{{#arrayprint:b |<br/> |@@@@ |[[:Kategoria:@@@@|@@@@]] }}
Zdefiniowana wartość właściwości z Semantic MediaWiki
{{#arrayprint:b |<br/> |@@@@ |[[wartość1::@@@@]] }}
Wbudowana funkcja parsera
{{#arrayprint:b |<br/> |@@@@ |długość @@@@:{{#len:@@@@}} }}
Wbudowany szablon (z parametrami)
{{#arrayprint:b|<br/>|@@@@|{{szablon|wartość2|@@@@}} }}

arrayindex[]

Ta funkcja drukuje wartości tablicy (oznaczone jako klucz) w pozycji indeks.

Składnia:

{{#arrayindex:klucz|indeks|domyślny}}

Notatki:

  • Nieprawidłowy indeks (nie liczbowy, lub nie powiązany) będzie zwracał pusty ciąg znaków.
  • Indeks oparty jest na 0, czyli pierwszy element indeksu to 0.
  • Ujemne elementy powinny zwrócić ostatnie elementy (np. -1 powinien zwrócić ostatni element tablicy).
  • domyślny zostanie zwrócony w przypadku, kiedy tablica nie istnieje, klucz nie istnieje w tablicy lub jeśli wartością jest pusty ciąg znaków.

Przykłady:

Trzeci element z tablicy a
{{#arrayindex:a |2 }}
Ostatni element z tablicy b
{{#arrayindex:b |-1 }}
Drukowanie domyślnych wartości dla niepoprawnego indeksu
{{#arrayindex:c |foo |zła wartość }}

arraysize[]

Ta funkcja zwraca rozmiar (liczbę elementów) w tablicy. Zobacz: http://www.php.net/manual/en/function.count.php

W przypadku otrzymania nie istniejącej tablicy funkcja powinna mieć pusty łańcuch znaków zamiast liczby. To pozwala sprawdzić czy tablica istnieje.

Składnia:

{{#arraysize:klucz}}

Przykłady:

Rozmiar tablicy:
{{#arraysize:a}}
Sprawdzanie czy tablica istnieje, czy nie:
{{#if: {{#arraysize:b}} | ''tablica istnieje'' | ''tablica nie jest zdefiniowana'' }}

arraysearch[]

Ta funkcja zwraca indeks pierwszej występującej w tablicy 'wartości' (oznaczonej jako 'klucz') rozpoczynając od pozycji ustalonej przez parametr 'indeks' i zwraca pusty ciąg znaków kiedy nie występuje. kiedy tak i/lub nie jest określone, pokaże zawartość tak jeżeli znajdzie, w przeciwnym wypadku pokaże zawartość nie. Zobacz: http://www.php.net/manual/en/function.array-search.php

Składnia:

{{#arraysearch:klucz|wartość|indeks|tak|nie}}


Przykłady:

Zwraca indeks pierwszej występującej wartości
{{#arraysearch:b|biały}}
{{#arraysearch:b|czerwony}}
Zwraca indeks pierwszej występującej wartości
{{#arraysearch:b|biały}}
{{#arraysearch:b|czerwony}}
używając przesunięcia indeksów
{{#arraysearch:b|czerwony|0}}
{{#arraysearch:b|czerwony|2}}
używając wyrażeń regularnych
{{#arraysearch:b|/low/}}
{{#arraysearch:b|/LOW/i}} - wielkośc liter ma znaczenie
{{#arraysearch:b|low}}
używaj opcji tak/nie przy drukowaniu
{{#arraysearch:b|biały|0|tak|nie}}
{{#arraysearch:b|żółty|0|tak|nie}}

arraysearcharray[]

Ta funkcja przeszukuje tablicę (oznaczoną jako klucz) i tworzy nową tablicę (oznaczoną jako nowy_klucz) ze wszystkimi wyszukanymi wynikami. Kryteria wyszukiwania wartość może być łańcuchem znaków lub wyrażeniem regularnym. Jeżeli indeks jest podany, wyszukiwanie powinno się rozpocząć od niego, limit może definiować maksymalną liczbę wyników. Parametr oznaczony jako przekształcenie może być używany jeśli wartość jest wyrażeniem regularnym. Zobacz: PHP preg_replace.

Składnia:

{{#arraysearcharray:nowy_klucz|klucz|wartość|indeks|limit|przekształcenie}}

Notatki:

  • Jeżeli wartość jest łańcuchem znaków, nowy_klucz będzie zawierać tylko wpisy z takim ciągiem znaków.
  • Ujemna wartość indeksu - -n może być używana tylko do wyszukiwania ostatnich n wpisów.

Przykłady:

Znajdź wszystkie wpisy w tablicy 'a' zaczynając od A i umieścić je w nowej tablicy 'x'
{{#arraysearcharray:a |x |/^A\s.+/ }}
wyszukaj wszystkie wpisy w tablicy 'a' które kończą się liczbami i umieścić numery w nowej tablicy 'y'
{{#arraysearcharray:a |y |/^.*?(\d+)$/ |0 |-1 | $1 }}

arrayslice[]

Funkcja ta wydobywa podtablicę z tablicy (oznaczoną jako 'klucz') w nową tablicę (oznaczoną jako 'nowy_klucz'). Zobacz: http://www.php.net/manual/en/function.array-slice.php

Składnia:

{{#arrayslice:nowy_klucz|klucz|offset|długość}}

Notatki:

  • Przesunięcie wskazuje punkt startowy kawałka tablicy, może być to (i) liczba nieujemna (ii) liczba ujemna dla indeksu wstecznego (np. ostatni element tablicy to -1). Przesunięcie jest zależne od wskaźnika (który musi być liczbą nieujemną).
  • Długość wskazuje, ile elementów ma być wyodrębnionych. Jeżeli zostanie pominięta, sekwencja będzie zawierać wszystko od przesunięcia do końca tablicy.
  • Jeśli przesunięcie nie jest mniejsze niż rozmiar tablicy, pusta tablica zostanie zwrócona, jeżeli przesunięcie nie jest większe niż w przypadku negatywnej wielkości tablicy, zostanie zwrócona nowa tablica ze wszystkimi elementami.

Przykłady:

Wydobądź dwa elementy rozpoczynając od elementu przesuniętego o 1
{{#arrayslice:x|b|1|2}}
Wydobądź dwa elementy rozpoczynając od elementu przesuniętego o -2
{{#arraymerge:x|b|-2|2}}

Zmienianie tablicy[]

Funkcje, które zmieniają tablicę bezpośrednio, zamiast tworzyć nową tablicę.

arrayunique[]

Ta funkcja przekształca tablicę (oznaczoną jako 'klucz') w zestaw (bez zduplikowanych i pustych elementów). Zobacz: http://www.php.net/manual/en/function.array-unique.php

Składnia:

{{#arrayunique:klucz}}

Przykład:

przekształcenie tablicy w zestaw
{{#arrayunique:b}}

arrayreset[]

Ta funkcja powinna usunąć ustawienie kilku lub wszystkich zdefiniowanych tablic.

Składnia:

{{#arrayreset:}}
{{#arrayreset:klucz1 |klucz2 |... |klucz-n }}

Notatki:

  • Używając arraysize na niej zwróci pusty ciąg znaków zamiast 0. Do prostego wyczyszczenia tablicy można użyć {{#arraydefine:klucz}}.

arraysort[]

Ta funkcja sortuje tablicę w następującej kolejności.

Składnia:

{{#arraysort:klucz|order}}

Notatka:

  • Każdy element tablicy jest traktowana jako ciąg znaków, oznacza to, że liczby mogą nie być sortowane zgodnie z oczekiwaniami.

Przykłady:

Sortowanie tablicy
{{#arraysort:x|desc}}
Losowanie tablicy
{{#arraysort:x|random}}
Odwracanie tablicy
{{#arraysort:x|reverse}}

Interakcja pomiędzy tablicami[]

Funkcje, które działają w więcej niż jednej tablicy, tworzą jedną nową tablicę lub nadpisują istniejącą. Funkcje te mogą oddziaływać z więcej niż dwoma tablicami na raz. W przypadku gdy mamy do czynienia z tylko jedną tablicą, utworzy się kopia tej tablicy. Wszelkie nieistniejącą tablice będą po prostu ignorowane przez te funkcje.

arraymerge[]

Funkcja ta scala wartości z dwóch lub większej liczby tablic do nowej tablicy (oznaczonej jako nowy_klucz). Zobacz: http://www.php.net/manual/en/function.array-merge.php

Składnia:

{{#arraymerge:nowy_klucz |klucz1 |klucz2 |... |klucz-n }}

Przykłady:

Scalenie dwóch tablic
{{#arraymerge:x |a |b }}
Duplikuje tablicę (zachowując trzeci element arraymerge pusty)
{{#arraymerge:x |b }}

arrayunion[]

Ta funkcja przenosi wartości dwóch lub więcej tablic w nową tablicę (oznaczoną jako nowy_klucz) wyłączając zduplikowane wartości.

Składnia:

{{#arrayunion:nowy_klucz |klucz1 |klucz2 |... |klucz-n }}

Notatki:

  • Jest to zestaw operatorów, zwrócona tablica nie zawiera zduplikowanych wartości.

Przykład:

Połączenie trzech elementów
{{#arrayunion:x |a |b |c }}

arraydiff[]

Ta funkcja oblicza (w teorii) różnicę dwóch lub więcej tablic. Wynik tablicy jest oznaczony jako nowy_klucz. Zwrócona tablica zawiera elementy pierwszej tablicy (oznaczonej jako klucz1), które nie zostały zdefiniowane w pozostałych tablicach. Zobacz: http://www.php.net/manual/en/function.array-diff.php

Składnia:

{{#arraydiff:nowy_klucz |klucz1 |klucz2 |... |klucz-n }}

Notatki:

  • Jest to zestaw operatorów, zwrócona tablica nie zawiera zduplikowanych wartości.
  • Funkcja ta może być używana do testowania związku dla podklasy

Przykłady:

Różnice (b-a)
{{#arraydiff:x |b |a }}
Różnice (a-b)
{{#arraydiff:x |a |b }}
Różnice (a-(b+c))
{{#arraydiff:x |a |b |c }}

arrayintersect[]

Funkcja ta oblicza teoretyczne skrzyżowanie się dwóch lub więcej podanych tablic. Wynik tablicy jest oznaczony jako nowy_klucz. Zobacz: http://www.php.net/manual/en/function.array-intersect.php

Składnia:

{{#arrayintersect:nowy_klucz |klucz1 |klucz2 |... |klucz-n }}

Notatka:

  • Jest to zestaw operatorów, zwrócona tablica nie zawiera zduplikowanych wartości.

Przykład:

Skrzyżowanie się trzech tablic, tworzy nową tablicę x
{{#arrayintersect:x |a |b |c }}
Advertisement