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 introduces two configuration variables:


 * $egArraysCompatibilityMode
 * ($egArrayExtensionCompatbilityMode in 1.4 alpha) Set to true, this will activate the compatibility mode which will bring back the behavior of the old ArrayExtension 1.3.2 as far as possible. This is because in Version 2.0 several breaking changes have been introduced. So using this compatibility mode allows a smooth switch from 1.x to 2.x Arrays extension. By default, compatibility mode is inactive. For a list which changes are effected by this, see Extension:Arrays/Pre 2.0 Documentation#Differences compared to Arrays 2.0. If you have been using the old ArrayExtension within your wiki before, you might want to take a look at that list and adjust your templates before switching to Arrays without compatibility mode.


 * $egArraysExpansionEscapeTemplates
 * Contains a key-value pair list of characters that should be replaced by a template or parser function call within array values included into an . By replacing these special characters before including the values into the string which is being expanded afterwards, array values can't distract the surrounding MW code. Otherwise the array values themselves would be parsed as well. By default this will escape the following characters with the following template or parser function calls:
 * =  ( "Template:=" should print ' ' )
 * =  ( "Template:!" should print ' ' )
 * Starting with MW 1.24.0 it is no longer necessary to create "Template:!" since its purpose is served by the new  magic word.
 * =  ( "Template:((" should print ' ' )
 * =  ( "Template:))" should print ' ' )
 * Make sure these templates or parser functions exist within your wiki or change this variable accordingly. If this is not set up properly,  might print unexpected values in case on of these character sequences is being used within array values.
 * $egArraysExpansionEscapeTemplates also can simply be set to null, in this case it switches back to pre 2.0 behavior where array values with these character sequences did break the given subject code within . If the compatibility mode is active, this will always be treated as set to null.

Dizi öğelerine yinelemeli erişim
It is possible to iteratively access elements of an array using or.

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.