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 (1$ 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.

Dizi öğelerine yinelemeli erişim
veya kullanarak bir dizinin ögelerine yinelemeli olarak erişmek mümkündür.

Using arrayprint
Below is the expected output: More examples can be found at the former Tetherless World Wiki.

Anahtarları yeniden kullanma
Once an array previously defined is printed, the same key can be reused for another array further down the page. As long as this sequence is observed, there is no need to define a unique key for every array.

Loops uzantısı kullanma
For more complex tasks it is possible to loop through an array using the extension.

This would output something like:
 * red
 * green
 * blue

Working with
There are two ways populating an array with semantic data. The first solution, using Semantic Result Formats is faster and more reliable, also works with complex data sets including record data and multiple values for one property.

Using
Semantic Result Formats (SRF) introduces the Array format in version 1.6.1. It can be used to query data which will automatically be stored within an Extension:Arrays array. This is the preferred solution dealing with semantic data in arrays. Details can be found on the semantic-mediawiki.org.

Örnek:

Standart bir sorgu kullanma
If you can't use the SRF solution above, Arrays also allows to populate an array using a SMW query result of the list format:

Örnek A: To create a list of instances of the class 'Color'

Örnek B: To create a unique list of values of property 'has color'

Örnek C: To deal with 2D array generated by SWM query (e.g. record-type property) given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00"

1. create an array 'colors'

2. split the first element of 'colors' into another array 'colors0'

 Notes: 
 * semantic query parameters
 * option is used to exhaust all returned results of the semantic query
 * option is used to set the separator for entries of the results
 * option to cut off the page column

Working with
In a similar way as described above for SMW the Arrays extension can be used to store results of a DPL query. In the example, we show how a result list can be inverted. We collect all parameter values which are used by certain pages when they include a given template. We store pairs of template parameter value and pagename. Then we sort the array and print the pairs. If consecutive array elements have the same first part (i.e. the parameter values are identical), the first part is only printed once. Thus we can construct a simple inverted index. The same mechanism could be applied to other problems as well.

Ayrıca bakınız

 * - very similar extension for the use of hash tables in MediaWiki.
 * - includes more than fifty functions for working with arrays using the PHP syntax.
 * - offers the parser function . Since input and output are handled by the same function, it does away with the need to define a key.
 * - provides a set of parser functions to operate on multidimensional and associative arrays.
 * - Scribunto which allows you to embed Lua scripts into wikipages, which provides arrays and standard imperative programming language control flow.
 * - Scribunto which allows you to embed Lua scripts into wikipages, which provides arrays and standard imperative programming language control flow.