Extension:Arrays/tr

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:



arraydefine
Bu işlev, 'delimiter' ile ayrılmış 'values' listesini kullanarak bir dizi ('key' ile tanımlanan) oluşturur. Değişkene daha sonra diğer işlevler tarafından erişilebilir.

Sözdizimi:

Notlar:
 * values, delimiter 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.  (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: 

arrayprint
Bu işlev, bir dizinin değerlerini özelleştirilebilir biçimde yazdırır.

Sözdizimi:

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:

arrayindex
Bu işlev, bir dizinin değerini (key ile tanımlanır) index konumunda yazdırır.

Sözdizimi:

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  olur).
 * Dizinin olmaması, anahtarın dizide olmaması veya değerin boş bir dize olması durumunda default döndürülür.

Örnekler:

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:

Örnekler:

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:

Örnekler:

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:

Notlar:
 * value bir dize ise, new_key dizisi yalnızca tam olarak bu dizenin girişlerini içerecektir.
 * gibi negatif index değerleri, yalnızca son n girişlerini aramak için kullanılabilir.
 * Viki içinde 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:

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:

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:

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:

Örnek:

arrayreset
Bu işlev, tanımlanmış dizilerin bazılarını veya tümünü kaldıracaktır. Sözdizimi:

Notlar:
 * Bunlarda arraysize kullanmak,  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   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. Syntax:
 * - sıralama yok (varsayılan)
 * - azalan sırada (https://php.net/function.sort sayfasına bakın)
 * / - artan sırada (https://php.net/function.rsort sayfasına bakın)
 * - rastgele sırayla (https://php.net/function.array-rand sayfasına bakın)
 * - ters sırada (https://php.net/function.array-reverse sayfasına bakın)

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:

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:

Örnekler:

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:

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:

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:

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:

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:

Not:
 * Bu bir küme operatörüdür, yani döndürülen dizi, yinelenen değerleri olmayan bir kümedir.

Örnek:

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. Değişikliklerin bundan etkilendiği bir liste için Extension:Arrays/2.0 Öncesi Belgelendirmesi#Arrays 2.0'dan farklılıklar sayfasına bakın. 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
 * 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)
 * 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  beklenmeyen değerler yazdırabilir.
 * $egArraysExpansionEscapeTemplates ayrıca basitçe null olarak ayarlanabilir, bu durumda bu karakter dizileriyle dizi değerlerinin verilen subject kodunu  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
veya kullanarak bir dizinin ögelerine yinelemeli olarak erişmek mümkündür. 

arrayprint kullanma
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, uzantısını kullanarak bir dizide dolaşmak mümkündür.

Bu, şöyle bir çıkış verir:


 * red
 * green
 * blue

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.



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:



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

Örnek B: 'has color' özelliğinin benzersiz bir değer listesi oluşturmak için

Ö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

2. 'colors' ögesinin ilk öğesini başka bir 'colors0' dizisine bölün

Notlar: 
 * anlamsal sorgu parametreleri
 * Anlamsal sorgunun döndürülen tüm sonuçlarını tüketmek için  seçeneği kullanılır
 * Sonuçların girişleri için ayırıcı ayarlamak için  seçeneği kullanılır
 * Sayfa sütununu kesmek için  seçeneği

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. Ö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

 * - MediaWiki'de karma tabloların kullanımı için çok benzer bir uzantı.
 * - PHP sözdizimini kullanarak dizilerle çalışmak için elliden fazla işlevi içerir.
 * - 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.
 * - çok boyutlu ve ilişkisel diziler üzerinde çalışmak için bir dizi ayrıştırıcı işlevi sağlar.
 * - Diziler ve standart zorunlu programlama dili kontrol akışı sağlayan, Lua betiklerini viki sayfalara gömmenize izin veren Scribunto.
 * - a Parsoid-compatible alternative, that also works with multidimensional and associative arrays.
 * - a Parsoid-compatible alternative, that also works with multidimensional and associative arrays.