Extension:Arrays/tr

Arrays uzantısı (eski adıyla ArrayExtension), ayrıştırıcı işlevi için diziler üzerinde çalışan ek bir grup oluşturur.

İşlevler
Bu uzantı aşağıdaki ayrıştırıcı işlevlerini tanımlar:

arraydefine
Bu işlev, 'delimiter' ile ayrılmış bir 'values' listesi kullanarak bir dizi ('key' ile tanımlanır) oluşturur. Değişkene daha sonra başka fonksiyonlar ile erişilebilir.

Sözdizimi:

Notlar:
 * values, delimiter ile ayrılmış dizelerin listesidir
 * Ortaya çıkan dizi bir dizeler dizisidir.
 * Varsayılan sınırlayıcı ',' belirtilmezse, bir sınırlayıcı (i) bir dize (sınırlayıcıyı çevreleyen beyaz boşluklar kırpılır) veya (ii) Perl normal ifadesi, ör.  (preg_split adresine 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 belirtilmedikçe seçenekler yok sayı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, ' ' kanal karakterlerinden kaçmak zorunda değilsiniz! Tüm yapı içinde, desen aranacak ve her döngünün geçerli (kaçan) dizi değeri ile değiştirilecektir. Son olarak, tüm dize ayrıştırılır ve ayırıcı olarak sınırlayıcı ile yerleştirilecek bir sonuç dizisine yerleştirilir.
 * Yazdırılması gereken dizinin mevcut olmaması durumunda, boş bir dize döndürülür. (1.4 alfada, uyumluluk modunun bir parçası olarak tanıtıldı)
 * Varsayılan sınırlayıcı dile bağlıdır, İngilizce için ' '. (2.0'da, uyumluluk modunun bir parçası olarak tanıtıldı)

Örnekler:

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

Sözdizimi:

Notlar:
 * Geçersiz dizin (sayı olmayan, sınır dışı) boş bir dizenin yazdırılmasına neden olur.
 * Dizin 0 tabanlıdır, yani ilk öğenin dizini 0'dır.
 * Negatif dizinler, sondan uzak bir öğe döndürür (örneğin,  dizilerin son öğesi olur).
 * default dizinin mevcut olmaması, anahtarın dizinin içinde olmaması veya değerin boş bir dize olması durumunda döndürülür.

Örnekler:

arraysize
Bu işlev, bir dizinin boyutunu (öğe sayısı) döndürür. Bakınız: https://secure.php.net/function.count

Belirli bir dizinin mevcut olmaması durumunda, işlevin çıkışı sayı yerine geçersiz bir dize olur. Bu, dizinin var olup olmadığını kontrol etmenizi sağlar.

Sözdizimi:

Örnekler:

arraysearch
Bu işlev, 'index' parametresi tarafından tanımlanan konumdan başlayarak dizideki 'value' ilk oluşumunun dizinini ('key' ile tanımlanır) 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 durumda yes olarak ayarlanan değeri, aksi takdirde no değerini genişletir. Bakınız: https://secure.php.net/function.array-search

Sözdizimi:

Örnekler:

arraysearcharray
Bu işlev bir diziyi arar (key ile tanımlanır) ve aramadan tüm sonuçlarla yeni bir dizi (new_key ile tanımlanır) oluşturur. value arama ölçütleri bir dize veya normal bir ifade olabilir. index verilirse arama burada başlayacaktır, limit maksimum arama sonuçlarını tanımlayabilir. value normal bir ifade ise transform ile tanımlanan parametre kullanılabilir. Eşleşen girişlerin sonucunu PHP preg_replace 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çerir.
 * 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  e  değiştiricisi ile bir ilgisi yoktur (bu bir güvenlik ihlali olacaktır). Aktif e değiştirici ile transform dizesi, geri kaynaklar eklendikten sonra ayrıştırılır ve bundan sonra gerçek eşleşmenin yerini alır.

Örnekler:

arrayslice
Bu işlev bir diziden bir alt diziyi ('key' ile tanımlanır) yeni bir diziye ('new_key' ile tanımlanır) ayıklar. Bakınız: https://secure.php.net/function.array-slice

Sözidizimi:

Notlar:
 * Ofset, dilimin başlangıç noktasını belirtir, (i) geriye doğru endeks için negatif olmayan sayı (ii) negatif sayı olabilir (örneğin, dizinin ofsetinin son öğesi -1'dir). öteleme dizinden farklı (negatif olmayan bir sayı olmalıdır)
 * Uzunluk, kaç elemanın ayıklanacağı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, negatif dizi boyutundan büyük değilse ofset, tüm öğeleri içeren yeni bir dizi döndürülür

Örnekler:

Değişiklik
Yeni bir dizi oluşturmak yerine bir diziyi doğrudan değiştiren işlevler.

arrayunique
Bu işlev bir diziyi ('key' ile tanımlanır) kümeye (çoğaltılmış üye yok, boş öğe yok) dönüştürür. Bakınız: https://secure.php.net/function.array-unique

Syntax:

Örnekler:

arrayreset
Bu işlev tanımlı dizilerin bazılarını veya tümünü kaldırır.

Sözdizimi:

Notlar:
 * Üzerlerinde arraysize kullanıldığında,  yerine boş bir dize döndürülür, böylece gerçekten ayarlanmamıştır, boş değildir. Bir diziyi boşaltmak için   kullanılabilir.
 * Sürüm 1.4'ten önce alfa ' ' ayarlanması gereken birkaç diziyi ayırmak için kullanılır.

arraysort
Bu işlev bir diziyi aşağıdaki sırayla sıralar. Syntax:
 * (varsayılan) - sıralama yok
 * - azalan sırayla (bakınız: https://secure.php.net/function.sort)
 * / - artan sırada (bakınız:  https://secure.php.net/function.rsort)
 * - rastgele sırada (bakınız: https://secure.php.net/function.array-rand)
 * - ters sırada (bakınız: https://secure.php.net/function.array-reverse)

Not:
 * Her dizi öğesine bir dize olarak davranılıyor, yani rakamlar beklendiği gibi sıralanamayabilir.

Örnekler:

Etkileşim
Birden fazla dizi ile çalışan, yeni bir dizi oluşturan veya sonuç olarak mevcut bir dizinin üzerine yazan işlevler. Sürüm 2.0'dan bu yana, bu işlevler aynı anda yalnızca ikiden fazla diziyle etkileşime girebilir. Yalnızca bir diziyle ilgilenmeleri durumunda, bu dizinin bir kopyasını oluştururlar. Var olmayan diziler bu işlevler tarafından göz ardı edilir.

arraymerge
Bu işlev iki veya daha fazla dizinin değerini yeni bir dizide birleştirir (new_key ile tanımlanır). Bakınız: https://secure.php.net/function.array-merge

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 işleci, yani döndürülen dizi yinelenen değerler içermeyen bir kümedir.
 * Bu, daha sonra arrayunique ile arraymerge eşittir.

Örnek:

arraydiff
Bu işlev iki veya daha fazla dizinin (set teorik) 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) öğelerini içeren bir kümedir. Bakınız: https://secure.php.net/function.array-diff

Sözdizimi:

Not:
 * Bu bir küme işleci, yani döndürülen dizi yinelenen değerler içermeyen bir kümedir.
 * Bu işlev alt sınıf ilişkisini test etmek için kullanılabilir

Örnekler:

arrayintersect
Bu işlev, verilen iki veya daha fazla dizinin küme teorik kesişimini hesaplar. Sonuç dizisi new_key ile tanımlanır. Bakınız: https://secure.php.net/function.array-intersect

Sözdizimi:

Not:
 * Bu bir küme işleci, yani döndürülen dizi yinelenen değerler içermeyen bir kümedir.

Örnek:

Yapılandırma
Arrays 2.0 iki yapılandırma değişkeni sunar:


 * $egArraysCompatibilityMode : (1.4 alfa $egArrayExtensionCompatbilityMode) true olarak ayarlandığında, eski ArrayExtension 1.3.2'nin davranışını mümkün olduğunca geri getirecek uyumluluk modu etkinleştirilir. Bunun nedeni, Sürüm 2.0'da birkaç kırılma değişikliğinin getirilmesidir. Bu nedenle, bu uyumluluk modunun kullanılması 1.x'ten 2.x Arrays uzantısına yumuşak bir geçiş sağlar. Varsayılan olarak, uyumluluk modu etkin değildir. Değişikliklerin bundan etkilenen bir liste için /Pre_2.0_Documentationına bakın. Daha önce vikinizde eski ArrayExtension kullanıyorsanız, uyumluluk modu olmadan Arrays geçmeden önce bu listeye göz atmak ve şablonlarınızı ayarlamak isteyebilirsiniz.


 * $egArraysExpansionEscapeTemplates : Bir  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 karakterlerin anahtar/değer çifti listesini içerir. Değerleri daha sonra genişletilecek dizeye eklemeden önce bu özel karakterleri değiştirerek, dizi değerleri çevreleyen MW kodunu dağıtamaz. Aksi takdirde dizi değerlerinin kendileri 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çacaktır:
 * ile  ("Template:=", ' ' yazdırmalıdır)
 * ile  ("Template:!", ' ' yazdırmalıdır)
 * MW 1.24.0 ile başlayarak artık "Template:!" amacına yeni  sihirli kelime tarafından hizmet edilmiyor.
 * ile  ("Template:((", ' ' yazdırmalıdır)
 * ile  ("Template:))", ' ' yazdırmalı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 doğru şekilde ayarlanmazsa, dizi karakterleri içinde bu karakter sekanslarının kullanılması durumunda  beklenmedik değerler yazdırabilir.
 * $egArraysExpansionEscapeTemplates de sadece null olarak ayarlanabilir, bu durumda bu karakter dizilerine sahip dizi değerlerinin  içindeki verilen subject kodunu kırdığı 2.0 öncesi davranışa geri döner. Uyumluluk modu etkinse, bu her zaman "null" olarak ayarlanmış olarak kabul edilir.

Dizi öğelerine bağımsız olarak erişme
veya Extension:Loops kullanarak bir dizinin öğelerine tekrarlı olarak erişmek mümkündür.

arrayprint kullanma
beklenen çıkış aşağıdadır:

canlı örnekler için bu URL'yi izleyin.

Anahtarları yeniden kullanma
Önceden tanımlanmış bir dizi yazdırıldıktan sonra, aynı tuş sayfanın aşağısındaki başka bir dizi için tekrar kullanılabilir. Bu dizi gözlendiği sürece, her dizi için benzersiz bir anahtar tanımlamaya gerek yoktur.

Loops uzantısını kullanma
Daha karmaşık görevler için Loops uzantısı kullanarak bir dizi arasında geçiş yapmak mümkündür.

Bu şöyle bir şey çıkarır:
 * kırmızı
 * yeşil
 * mavi

Extension:Semantic MediaWiki ile çalıştırma
Bir diziyi semantik verilerle doldurmanın iki yolu vardır. Anlamsal Sonuç Biçimlerini kullanan ilk çözüm daha hızlı ve daha güvenilirdir, aynı zamanda kayıt verileri ve bir mülk 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 Dizi biçimini sunar. Extension:Arrays dizisinde otomatik olarak saklanacak verileri sorgulamak için kullanılabilir. Dizilerde semantik verilerle ilgili tercih edilen çözüm budur. Ayrıntılar semantic-mediawiki.org adresinde bulunabilir.

Örnek:

Standart bir sorgu kullanma
Yukarıdaki SRF çözümünü kullanamıyorsanız, Arrays, liste biçiminin SMW sorgu sonucunu kullanarak bir diziyi doldurmaya da izin verir:

Örnek A: 'Color' sınıfının örneklerinin bir listesini oluşturmak için

Örnek B: Benzersiz bir özellik değerleri listesi oluşturmak için 'has color'

Örnek C: SWM sorgusu tarafından oluşturulan 2B diziyi ele almak için (ör. kayıt türü özellik) given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00"

1. bir dizi 'colors' oluşturun

2. 'colors' ilk öğesini başka bir 'colors0' dizisine ayırın

Not:
 * anlamsal sorgu parametreleri
 * semantik sorgunun döndürülen tüm sonuçlarını tüketmek için kullanılır
 * sonuç girişleri için ayırıcıyı ayarlamak için kullanılır.
 * sayfa sütununu kesme seçeneği

Extension:DynamicPageList ile çalıştırma
Yukarıda SMW için tarif edilene benzer şekilde, Arrays uzantısı bir DPL sorgusu nun sonuçlarını saklamak için kullanılabilir.

Örnek'de bir sonuç listesinin nasıl "ters çevrilebileceğini" gösteririz. Belirli bir şablonu içerdiklerinde belirli sayfalar tarafından kullanılan tüm parametre değerlerini toplarız. Şablon parametre değeri ve sayfa adı çiftlerini saklarız. Sonra diziyi sıralarız ve çiftleri yazdırırız. Ardışık dizi elemanları aynı ilk kısma sahipse (yani parametre değerleri aynı ise), ilk kısım yalnızca bir kez yazdırılır. Böylece basit bir "ters endeks" oluşturabiliriz. Aynı mekanizma diğer sorunlara da 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şlev içerir.
 * Extension:Variables
 * Extension:Page Forms, #arraymap ayrıştırıcı işlevini sunar. Giriş ve çıkış aynı işlevle ele alındığından, bir anahtar tanımlama ihtiyacını ortadan kaldırır.
 * Extension:WSArrays, çok boyutlu ve ilişkilendirilebilir dizilerde çalışmak için bir dizi ayrıştırıcı işlevi sağlar.
 * Extension:Scribunto Lua betiklerini diziler ve standart zorunlu programlama dili kontrol akışı sağlayan vikisayfalara gömmenizi sağlayan Scribunto.