Extension:Arrays
Arrays Sürüm durumu: kararlı |
|
---|---|
Uygulama | Ayrıştırıcı işlevi |
Açıklama | Ayrıştırıcıyı dizi işlevleriyle geliştirir. |
Yazar(lar) | Li Ding, Jie Bao, Daniel Werner |
En son sürüm | 2.2.1 (2020-12-08) |
MediaWiki | 1.31+ |
Veritabanı değişiklikleri | Hayır |
Lisans | MIT Lisansı |
İndir | README CHANGELOG |
|
|
Quarterly downloads | 35 (Ranked 101st) |
Translatewiki.net adresinde mevcutsa, Arrays uzantısını çevirin | |
Sorunlar | Açık görevler · Hata bildir |
Arrays uzantısı (önceden ArrayExtension olarak biliniyordu), diziler üzerinde çalışan ek bir ayrıştırıcı işlevi oluşturur.
İşlevler
Bu uzantı, aşağıdaki ayrıştırıcı işlevlerini tanımlar:
Grup | İşlevler |
---|---|
Bir dizi oluşturun (benzersiz, sıralama, yazdırma seçenekleriyle) | #arraydefine
|
Bir diziden bilgi ayıklayın | #arrayprint , #arrayindex , #arraysize , #arraysearch , #arraysearcharray , #arrayslice
|
Bir diziyi değiştir | #arrayreset , #arrayunique , #arraysort
|
Birkaç dizi arasındaki etkileşim | #arraymerge , #arrayunion , #arrayintersect , #arraydiff
|
Extension:HashTables kurulursa, dizi/karma tablo etkileşimi için | #hashtoarray , #arraytohash
|
Dizi oluşturma
arraydefine
Bu işlev, '$3' ile ayrılmış '$2' listesini kullanarak bir dizi ('$1' ile tanımlanan) oluşturur. Değişkene daha sonra diğer işlevler tarafından erişilebilir.
Sözdizimi:
{{#arraydefine:key | values | delimiter | options}}
Notlar:
- $1, $2 ile ayrılmış dizelerin listesidir.
- Ortaya çıkan dizi, bir dizi dizidir.
- Varsayılan sınırlayıcı belirtilmemişse ',' değeridir, sınırlayıcı bir dize (sınırlayıcıyı çevreleyen beyaz boşluklar kesilecektir) veya bir Perl normal ifadesi olabilir, örn.
/\s*,\s*/
(preg_split sayfasına bakın). - Kullanıcılar boş bir dizi tanımlayabilir (örneğe bakın).
- Kullanıcılar benzersiz, sıralama ve yazdırma gibi seçenekleri belirleyebilir (örneğe bakın).
- Bir sınırlayıcı da belirtilmediği sürece seçenekler yoksayılır.
Örnekler:
'a' adında tek elemanlı bir dizi tanımlayın | {{#arraydefine:a|red}} |
'b' adında dört öğeli bir dizi tanımlayın, varsayılan sınırlayıcıyı kullanın (',') | {{#arraydefine:b|orange, red, yellow, yellow}} |
'c' adında boş bir dizi tanımlayın/ayarlayın | {{#arraydefine:c}} |
Sınırlayıcı olarak ';' kullanarak 'd' adında iki elemanlı bir dizi tanımlayın | {{#arraydefine:d|apple; pear|;}} |
Sınırlayıcı olarak /\s*[;,]\s*/ normal ifadesini kullanarak 'e' adında üç elemanlı bir dizi tanımlayın
|
{{#arraydefine:e|apple, pear; orange|/\s*[;,]\s*/}} |
'f' adında üç öğeli bir dizi tanımlayın, sınırlayıcı (','), "unique, sort=desc, print=list" seçeneklerini kullanın (dizi elemanları benzersizdir, azalan düzende sıralanır ve yazdırılır). Sıralamanın daha fazla seçenek değeri için #arraysort sayfasına bakın. | {{#arraydefine:f|orange, red, yellow, yellow |, |unique, sort=desc, print=list}} |
Dizilerle çalışma
Çıkarma
arrayprint
Bu işlev, bir dizinin değerlerini özelleştirilebilir biçimde yazdırır.
Sözdizimi:
{{#arrayprint:key|delimiter|pattern|subject|options}}
Notlar:
- subject viki bağlantılarını, şablonları ve ayrıştırıcı işlevlerini kabul eder.
- subject içinde, '
|
' boru karakterlerinden kaçmak zorunda değilsiniz. Tüm yapı içinde, pattern aranacak ve her döngünün mevcut (çıkarılan) dizi değeri ile değiştirilecektir. Son olarak, tüm dize ayrıştırılacak ve ayırıcı olarak delimiter ile patlatılacak bir dizi sonuç içine koyulacaktır. - Yazdırılması gereken dizinin mevcut olmaması durumunda, boş bir dize döndürülür (uyumluluk modunun bir parçası olan 1.4 alfada sunulmuştur).
- Varsayılan sınırlayıcı dile bağlıdır, İngilizce için '
,
' şeklindedir (2.0'da sunulmuştur, uyumluluk modunun bir parçasıdır).
Örnekler:
Task | Example code | Output (the array b is defined above) |
---|---|---|
Yazdır - dile bağlı varsayılan liste sınırlayıcıyı kullanma | {{#arrayprint:b}} |
|
Yazdır - sınırlayıcı olmadan | {{#arrayprint:b | }} |
|
Yazdır - sınırlayıcı olarak '<br /> ' (satır sonu) kullanma
|
{{#arrayprint:b |<br/> }} |
orange
red yellow yellow |
Son iki öğenin ' and ' (veya yerel dillerdeki eşdeğeri) ile zincirlendiği güzel liste çıkışı. delimiter parametresi boş olsa bile, ', ' (veya dillerdeki eşdeğeri) kullanılacaktır çünkü aksi hâlde pek hoş olmaz.
|
{{#arrayprint:b ||@ |@ |print=pretty }} |
|
Viki bağlantısını kategorilere gömün | {{#arrayprint:b |<br/> |@@@@ |[[:Category:@@@@|@@@@]] }} |
orange |
Semantic MediaWiki özellik değeri tanımlayın | {{#arrayprint:b |<br/> |@@@@ |[[prop1::@@@@]] }} |
|
Ayrıştırıcı işlevini gömün | {{#arrayprint:b |<br/> |@@@@ |length of @@@@:{{#len:@@@@}} }} |
|
Şablonu göm (parametrelerle birlikte) | {{#arrayprint:b|<br/>|@@@@|{{template|prop2|@@@@}} }} |
arrayindex
Bu işlev, bir dizinin değerini (key ile tanımlanır) index konumunda yazdırır.
Sözdizimi:
{{#arrayindex:key|index|default}}
Notlar:
- Geçersiz dizin (sayı dışı, sınır dışı) boş bir dize yazdırılmasına neden olur.
- Dizin 0 tabanlıdır, yani ilk öğenin dizini 0'dır.
- Negatif dizinler, sondan çok uzakta bir öğe döndürür (örneğin, dizinin son öğesi
-1
olur). - Dizinin olmaması, anahtarın dizide olmaması veya değerin boş bir dize olması durumunda default döndürülür.
Örnekler:
a dizisi içindeki üçüncü öğe | {{#arrayindex:a |2 }} |
b dizisi içindeki son öğe | {{#arrayindex:b |-1 }} |
Geçersiz dizin için varsayılan değeri yazdır | {{#arrayindex:c |foo |bad value }} |
arraysize
Bu işlev, bir dizinin boyutunu (öge sayısı) döndürür.
https://php.net/function.count sayfasına bakın Verilen dizinin mevcut olmaması durumunda, işlevin çıkışı sayı yerine geçersiz bir dize olacaktır. Bu, dizinin var olup olmadığını kontrol etmeyi sağlar.
Sözdizimi:
{{#arraysize:key}}
Örnekler:
a dizisinin boyutu: | {{#arraysize:a}} |
a dizisinin var olup olmadığını kontrol edin: | {{#if: {{#arraysize:a}} | ''dizi var'' | ''dizi tanımlanmadı'' }} |
arraysearch
Bu işlev, 'index' parametresiyle tanımlanan konumdan başlayarak dizideki ('key' ile tanımlanan) 'value' ögesinin ilk oluşumunun dizinini döndürür ve başarısız olduğunda boş bir dize döndürür. yes ve/veya no belirtildiğinde, bu, eğer bulunursa yes olarak ayarlanan değeri, aksi takdirde no değerini genişletecektir. https://php.net/function.array-search sayfasına bakın
Sözdizimi:
{{#arraysearch:key|value|index|yes|no}}
Örnekler:
Bir değerin ilk oluşumunun dizini döndürün | {{#arraysearch:b|white}} {{#arraysearch:b|red}} ofset kullanın {{#arraysearch:b|red|0}} {{#arraysearch:b|red|2}} preg düzenli ifade eşleşmesini kullanın {{#arraysearch:b|/low/}} {{#arraysearch:b|/LOW/i}} - büyük/küçük harfe duyarsız {{#arraysearch:b|low}} yes no yazdırma seçeneğini kullanın {{#arraysearch:b|white|0|yes|no}} {{#arraysearch:b|yellow|0|yes|no}} |
arraysearcharray
Bu işlev bir diziyi arar (key ile tanımlanır) ve tüm sonuçlarla birlikte aramadan yeni bir dizi (new_key ile tanımlanır) oluşturur. Arama kriteri value bir dize veya normal bir ifade olabilir. index verilirse, arama orada başlayacak, limit maksimum arama sonuçlarını tanımlayabilir. transform ile tanımlanan parametre, value normal bir ifadeyse kullanılabilir. Eşleşen girdilerin sonucunu, PHP preg_replace içine yapacağı gibi new_key dizisine dönüştürebilir.
Sözdizimi:
{{#arraysearcharray:new_key|key|value|index|limit|transform}}
Notlar:
- value bir dize ise, new_key dizisi yalnızca tam olarak bu dizenin girişlerini içerecektir.
-n
gibi negatif index değerleri, yalnızca son n girişlerini aramak için kullanılabilir.- Viki içinde Extension:Regex Fun varsa, Regex Fun'ın e değiştiricisi normal ifade içinde kullanılabilir. Bunun PHP'nin e değiştiricisiyle hiçbir ilgisi yoktur (bu bir güvenlik ihlali olur). Aktif e değiştirici ile, geri referanslar eklendikten sonra transform dizgisi ayrıştırılır, bundan sonra gerçek eşleşmenin yerini alır.
Örnekler:
'a' dizisindeki A ile başlayan ve ardından bir boşluk bırakan tüm girdileri bulun ve bunları yeni bir 'x' dizisine koyun.
|
{{#arraysearcharray:x |a |/^A\s.+/ }} |
Sayılarla biten ve sayıları yalnızca yeni bir 'y' dizisine koyan 'a' dizisinin tüm girişleri aramak. | {{#arraysearcharray:y |a |/^.*?(\d+)$/ |0 |-1 | $1 }} |
Sayılarla biten ve bu öğelerin uzunluğunu yeni diziye koyan 'a' dizisinin tüm girişlerini aramak (bu, Regex Fun uzantısı gerektirir). | {{#arraysearcharray:y |y |/^.*?\d+$/e |0 |-1 | {{#len:$0}} }} |
'a' dizisinden boş değerleri kaldırın. | {{#arraysearcharray:a|a|/\S+/}} |
arrayslice
Bu işlev, bir diziden ('key' ile tanımlanır) yeni bir diziye ('new_key' ile tanımlanır) bir alt dizi çıkarır.
https://php.net/function.array-slice sayfasına bakın
Sözdizimi:
{{#arrayslice:new_key|key|offset|length}}
Notlar:
- Ofset, dilimin başlangıç noktasını belirtir, negatif olmayan bir sayı veya geriye doğru indeks için negatif bir sayı olabilir (örneğin, dizinin ofsetinin son elemanı -1'dir). Ofset, indeksten farklıdır (negatif olmayan bir sayı olmalıdır)
- Uzunluk, kaç tane öğenin çıkarılacağını gösterir. Atlanırsa, dizi, ofsetten dizinin sonuna kadar her şeye sahip olacaktır.
- Ofset dizi boyutundan küçük değilse boş dizi döndürülür, ofset negatif dizi boyutundan büyük değilse tüm öğeleri içeren yeni bir dizi döndürülür.
Örnekler:
Ofset 1'deki ögeden başlayarak iki ögeli bir dilim ayıklayın. | {{#arrayslice:x|b|1|2}} |
Ofset -2'deki ögeden başlayarak iki ögeli bir dilim çıkarın. | {{#arrayslice:x|b|-2|2}} |
Değişiklik
Yeni bir dizi oluşturmak yerine doğrudan diziyi değiştiren işlevler.
arrayunique
Bu işlev bir diziyi ('key' ile tanımlanır) bir kümeye dönüştürür (yinelenen üye yok, boş öge yok).
https://php.net/function.array-unique sayfasına bakın
Sözdizimi:
{{#arrayunique:key}}
Örnek:
Diziyi sete dönüştürün. | {{#arrayunique:b}} |
arrayreset
Bu işlev, tanımlanmış dizilerin bazılarını veya tümünü kaldıracaktır.
Sözdizimi:
{{#arrayreset:}} <!-- TÜM dizilerin ayarını kaldıracak -->
{{#arrayreset:key1 |key2 |... |key-n }}
Notlar:
- Bunlarda arraysize kullanmak,
0
yerine boş bir dize döndürür, bu nedenle gerçekten ayarlanmamışlar, boş değiller. Bir diziyi basitçe boşaltmak için{{#arraydefine:key}}
kullanılabilir. - 1.4 sürümünden önce alfa '
,
', ayarlanmamış olması gereken birkaç diziyi ayırmak için kullanılır.
arraysort
Bu işlev, bir diziyi aşağıdaki sırayla sıralar.
none
- sıralama yok (varsayılan)desc
- azalan sırada (https://php.net/function.sort sayfasına bakın)asce
/asc
- artan sırada (https://php.net/function.rsort sayfasına bakın)random
- rastgele sırayla (https://php.net/function.array-rand sayfasına bakın)reverse
- ters sırada (https://php.net/function.array-reverse sayfasına bakın)
Syntax:
{{#arraysort:key|order}}
Not:
- Her dizi ögesi bir dize olarak ele alınır, bu, sayıların beklendiği gibi sıralanmayabileceği anlamına gelir.
Örnekler:
Bir diziyi sıralayın. | {{#arraysort:x|desc}} |
Bir diziyi rastgele hâle getirin. | {{#arraysort:x|random}} |
Bir diziyi ters çevirin. | {{#arraysort:x|reverse}} |
Etkileşim
Sonuç olarak birden fazla diziyle çalışan, yeni bir dizi oluşturan veya var olanın üzerine yazan işlevler. Sürüm 2.0'dan bu yana, bu işlevler aynı anda yalnızca iki diziden daha fazlasıyla etkileşime girebilir. Yalnızca bir diziyle uğraşmaları durumunda, o dizinin bir kopyasını oluşturmaları yeterlidir. Var olmayan herhangi bir dizi, bu işlevler tarafından basitçe yok sayılır.
arraymerge
Bu işlev, iki veya daha fazla dizinin değerlerini yeni bir dizide birleştirir (new_key ile tanımlanır).
https://php.net/function.array-merge sayfasına bakın
Sözdizimi:
{{#arraymerge:new_key |key1 |key2 |... |key-n }}
Örnekler:
İki diziyi birleştir. | {{#arraymerge:x |a |b }} |
Bir diziyi çoğaltın (arraymerge değerinin üçüncü bağımsız değişkenini boş bırakın). | {{#arraymerge:x |b }} |
arrayunion
Bu işlev, iki veya daha fazla dizinin değerlerini, yinelenen değerler olmadan yeni bir dizide (new_key ile tanımlanır) birleştirir.
Sözdizimi:
{{#arrayunion:new_key |key1 |key2 |... |key-n }}
Notlar:
- Bu bir küme operatörüdür, yani döndürülen dizi, yinelenen değerleri olmayan bir kümedir.
- Bu, daha sonra arrayunique ile arraymerge olarak eşittir.
Örnek:
Üç dizinin birliği. | {{#arrayunion:x |a |b |c }} |
arraydiff
Bu işlev, iki veya daha fazla dizinin (teorik küme) farkını hesaplar. Sonuç dizisi new_key ile tanımlanır. Döndürülen dizi, diğer dizilerin hiçbirinde tanımlanmayan ilk verilen dizinin (key1 ile tanımlanan) ögelerini içeren bir kümedir. https://php.net/function.array-diff sayfasına bakın
Sözdizimi:
{{#arraydiff:new_key |key1 |key2 |... |key-n }}
Not:
- Bu bir küme operatörüdür, yani döndürülen dizi, yinelenen değerleri olmayan bir kümedir.
- Bu işlev, alt sınıf ilişkisini test etmek için kullanılabilir.
Örnekler:
Fark (b-a) | {{#arraydiff:x |b |a }} |
Fark (a-b) | {{#arraydiff:x |a |b }} |
Fark (a-(b+c)) | {{#arraydiff:x |a |b |c }} |
arrayintersect
Bu işlev, iki veya daha fazla verilen dizinin küme teorik kesişimini hesaplar. Sonuç dizisi new_key ile tanımlanır. https://php.net/function.array-intersect sayfasına bakın
Sözdizimi:
{{#arrayintersect:new_key |key1 |key2 |... |key-n }}
Not:
- Bu bir küme operatörüdür, yani döndürülen dizi, yinelenen değerleri olmayan bir kümedir.
Örnek:
x yeni diziye eklenen üç dizinin kesişimi | {{#arrayintersect:x |a |b |c }} |
Kurulum
- Dosyaları indirin ve
extensions/
klasörünüzdekiArrays
adlı dizine yerleştirin.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Arrays - LocalSettings.php dosyanızın altına aşağıdaki kodu ekleyin:
wfLoadExtension( 'Arrays' );
- Gerektiği gibi yapılandırın.
- Yapıldı – Uzantının başarıyla yüklendiğini doğrulamak için vikinizde Special:Version seçeneğine gidin.
Yapılandırma
Arrays 2.0 iki yapılandırma değişkeni sunar:
- $egArraysCompatibilityMode
- (1.4 alfada $egArrayExtensionCompatbilityMode) true olarak ayarlandığında, bu, eski ArrayExtension 1.3.2 davranışını mümkün olduğunca geri getirecek olan uyumluluk modunu etkinleştirecektir. Bunun nedeni, Sürüm 2.0'da birkaç kırılma değişikliğinin getirilmiş olmasıdır. Dolayısıyla bu uyumluluk modunu kullanmak, 1.x'ten 2.x Arrays uzantısına sorunsuz bir geçiş sağlar. Varsayılan olarak, uyumluluk modu etkin değildir. Vikinizde eski ArrayExtension daha önce kullandıysanız, uyumluluk modu olmadan Arrays ile geçmeden önce o listeye bir göz atmak ve şablonlarınızı ayarlamak isteyebilirsiniz.
- $egArraysExpansionEscapeTemplates
- #arrayprint içine dahil edilen dizi değerleri içinde bir şablon veya ayrıştırıcı işlev çağrısı ile değiştirilmesi gereken bir anahtar/değer çifti karakter listesi içerir. Bu özel karakterleri, daha sonra genişletilecek olan dizeye değerleri dahil etmeden önce değiştirerek, dizi değerleri çevreleyen MW kodunun dikkatini dağıtamaz. Aksi takdirde dizi değerlerinin kendisi de ayrıştırılır. Varsayılan olarak bu, aşağıdaki şablon veya ayrıştırıcı işlev çağrılarıyla aşağıdaki karakterlerden kaçar:
=
={{=}}
("Template:=", '=
' yazmalıdır)|
={{!}}
("Template:!", '|
' yazmalıdır)
- Not: MW 1.24.0 ile başlayarak, amacına yeni
{{!}}
sihirli kelime tarafından hizmet edildiğinden "Template:!" oluşturmak artık gerekli değildir.
{{
={{((}}
("Template:((", '{{
' yazmalıdır)}}
={{))}}
("Template:))", '}}
' yazmalıdır)
- Bu şablonların veya ayrıştırıcı işlevlerinin vikinizde bulunduğundan emin olun veya bu değişkeni buna göre değiştirin. Bu düzgün ayarlanmazsa, dizi değerlerinde bu karakter dizilerinden birinin kullanılması durumunda
#arrayprint
beklenmeyen değerler yazdırabilir. - $egArraysExpansionEscapeTemplates ayrıca basitçe null olarak ayarlanabilir, bu durumda bu karakter dizileriyle dizi değerlerinin verilen subject kodunu
#arrayprint
içinde bozulduğu 2.0 öncesi davranışa geri döner. Uyumluluk modu etkinse, bu her zaman null olarak ayarlanmış olarak değerlendirilir.
SSS
Dizi öğelerine yinelemeli erişim
#arrayprint veya Extension:Loops kullanarak bir dizinin ögelerine yinelemeli olarak erişmek mümkündür.
arrayprint kullanma
<!-- bir dizi tanımlayın -->
{{#arraydefine:colors|Red,Blue,Yellow}}
{{#arrayprint:colors||@@@@|<nowiki/>
* @@@@ uzunluğu: {{#len:@@@@}}
}}
Beklenen çıkış aşağıdadır:
|
Daha fazla örnek eski Tetherless World Viki adresinde bulunabilir.
Anahtarları yeniden kullanma
Önceden tanımlanmış bir dizi yazdırıldıktan sonra, aynı anahtar sayfanın ilerisindeki başka bir dizi için yeniden kullanılabilir. Bu dizi gözlemlendiği sürece, her dizi için benzersiz bir anahtar tanımlamaya gerek yoktur.
Loops uzantısı kullanma
Daha karmaşık görevler için, Loops uzantısını kullanarak bir dizide dolaşmak mümkündür.
{{ #arraydefine: colors | red;#FF0000, green;#00FF00, blue;#0000FF }}
{{
#loop: i
| 0 <!-- {{ #var:i }} için döngüler başlangıç değeri -->
| {{ #arraysize:colors }} <!-- döngü sayısı -->
| <nowiki/>
* {{
#arraydefine: val | {{ #arrayindex:colors | {{ #var:i }} }} | ;
}}
<span style="color:{{ #arrayindex: val | 1 }}">
{{ #arrayindex: val | 0 }}
</span>
}}
Bu, şöyle bir çıkış verir:
- red
- green
- blue
Extension:Semantic MediaWiki ile çalışmak
Bir diziyi anlamsal verilerle doldurmanın iki yolu vardır. Semantic Result Formats kullanan ilk çözüm, daha hızlı ve daha güvenilirdir, ayrıca kayıt verileri ve bir özellik için birden çok değer içeren karmaşık veri kümeleriyle de çalışır.
Extension:Semantic Result Formats kullanma
Semantic Result Formats (SRF), 1.6.1 sürümünde Array formatını tanıtır. Bir Extension:Arrays dizisinde otomatik olarak saklanacak verileri sorgulamak için kullanılabilir. Bu, dizilerdeki anlamsal verilerle ilgilenen tercih edilen çözümdür. Ayrıntılar semantic-mediawiki.org sayfasında bulunabilir.
Örnek:
{{#ask: [[Category:Color]][[:+]] |format=array |name=colors}} {{#arrayprint: colors}}
Standart bir sorgu kullanma
Yukarıdaki SRF çözümünü kullanamıyorsanız, Arrays, liste biçimindeki bir SMW sorgu sonucunu kullanarak bir diziyi doldurmanıza da olanak tanır:
Örnek A: 'Color' sınıfının örneklerinin bir listesini oluşturmak için
{{#arraydefine:colors|{{#ask:[[Category:Color]][[:+]] |sep =, |limit=1000}} }}
Örnek B: 'has color' özelliğinin benzersiz bir değer listesi oluşturmak için
{{#arraydefine:colors|{{#ask:[[has color::+]][[:+]] |?color= |mainlabel=- |sep =, |limit=1000}} |,|unique}}
Örnek C: SWM sorgusu tarafından oluşturulan 2B diziyle ilgilenmek için (ör. kayıt tipi özellik)
given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00" 1. 'colors' dizisini oluşturun {{#arraydefine:colors|red;#da2021, yellow;#fcff00, green;#00ff00}} 2. 'colors' ögesinin ilk öğesini başka bir 'colors0' dizisine bölün {{#arraydefine:color0|{{#arrayindex:colors|0}}|;}}
Notlar:
- anlamsal sorgu parametreleri
- Anlamsal sorgunun döndürülen tüm sonuçlarını tüketmek için
limit=1000
seçeneği kullanılır - Sonuçların girişleri için ayırıcı ayarlamak için
sep=,
seçeneği kullanılır - Sayfa sütununu kesmek için
mainlabel=-
seçeneği
- Anlamsal sorgunun döndürülen tüm sonuçlarını tüketmek için
Extension:DynamicPageList3 ile çalıştırmak
Yukarıda SMW için açıklanana benzer bir şekilde, DPL sorgusu sonuçlarını saklamak için Arrays uzantısı kullanılabilir. [$url Örnekte], bir sonuç listesinin nasıl tersine çevrilebileceğini gösteriyoruz. Belirli bir şablonu içerdiklerinde belirli sayfalar tarafından kullanılan tüm parametre değerlerini topluyoruz. şablon parametre değeri ve sayfa adı çiftlerini saklıyoruz. Ardından diziyi sıralar ve çiftleri yazdırırız. Ardışık dizi ögeleri aynı ilk bölüme sahipse (yani parametre değerleri aynıysa), ilk bölüm yalnızca bir kez yazdırılır. Böylece basit bir ters çevrilmiş indeks oluşturabiliriz. Aynı mekanizma diğer problemlere de uygulanabilir.
Ayrıca bakınız
- Extension:HashTables - MediaWiki'de karma tabloların kullanımı için çok benzer bir uzantı.
- Extension:PhpTags Functions/Functions/Array - PHP sözdizimini kullanarak dizilerle çalışmak için elliden fazla işlevi içerir.
- Extension:Variables
- Uzantı:Sayfa Formları - #arraymap ayrıştırıcı işlevi sunar. Giriş ve çıkış aynı işlev tarafından işlendiğinden, bir anahtar tanımlama ihtiyacını ortadan kaldırır.
- Extension:WSArrays - çok boyutlu ve ilişkisel diziler üzerinde çalışmak için bir dizi ayrıştırıcı işlevi sağlar.
- Extension:Scribunto - Diziler ve standart zorunlu programlama dili kontrol akışı sağlayan, Lua betiklerini viki sayfalara gömmenize izin veren Scribunto.
- Extension:ArrayFunctions - a Parsoid-compatible alternative, that also works with multidimensional and associative arrays.
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |