Dizi İşlevleri
Bu sayfa dizilerle ilgili olan Nette\Utils\Arrays, ArrayHash ve ArrayList sınıfları hakkındadır.
Kurulum:
Diziler
Nette\Utils\Arrays bir avuç kullanışlı dizi işlevi içeren statik bir sınıftır. Yineleyiciler için karşılığı Nette\Utils\Iterables'dır.
Aşağıdaki örneklerde, aşağıdaki sınıf takma adının tanımlandığı varsayılmaktadır:
associate(array $array, mixed $path): array|\stdClass
İşlev, $array
adresini belirtilen yola göre esnek bir şekilde ilişkisel bir diziye veya nesnelere
dönüştürür $path
. Yol bir dize veya dizi olabilir. Girdi dizisindeki anahtarların adlarından ve ‚[]‘,
‚->‘, ‚=‘ ve ‚|‘ gibi operatörlerden oluşur. Yol geçersizse Nette\InvalidArgumentException
adresini atar.
contains(array $array, $value): bool
Bir dizide değer olup olmadığını sınar. Sıkı bir karşılaştırma kullanır (===
)
every(array $array, callable $predicate): bool
Dizideki tüm öğelerin, function ($value, $key, array $array): bool
imzasına sahip olan sağlanan işlev
tarafından uygulanan testi geçip geçmediğini sınar.
some() işlevine bakın.
filter(array $array, callable $predicate): array
Verilen $predicate
ile eşleşen tüm anahtar-değer çiftlerini içeren yeni bir dizi döndürür. Geri arama
function ($value, int|string $key, array $array): bool
imzasına sahiptir.
first(array $array, ?callable $predicate=null, ?callable $else=null): mixed
İlk öğeyi döndürür (verilmişse belirtilen yüklemle eşleşen). Böyle bir öğe yoksa, $else
çağrısının sonucunu veya null döndürür.
$predicate
, function ($value, int|string $key, array $array): bool
imzasına sahiptir.
reset()
adresinden farklı olarak dahili işaretçiyi değiştirmez. $predicate
ve $else
parametreleri 4.0.4 sürümünden beri mevcuttur.
Bkz. last().
firstKey(array $array, ?callable $predicate=null): int|string|null
İlk öğenin anahtarını (verilmişse belirtilen yüklemle eşleşen) veya böyle bir öğe yoksa null döndürür.
$predicate
, function ($value, int|string $key, array $array): bool
imzasına sahiptir.
lastKey() işlevine bakın.
flatten(array $array, bool $preserveKeys=false): array
Çok boyutlu diziyi düz diziye dönüştürür.
get(array $array, string|int|array $key, ?mixed $default=null): mixed
Geri dönüşler $array[$key]
öğesi. Eğer mevcut değilse, üçüncü bağımsız değişken olarak varsayılan
bir değer ayarlanmadığı sürece Nette\InvalidArgumentException
adresi atılır.
Argüman $key
bir dizi de olabilir.
getRef(array &$array, string|int|array $key): mixed
Verilen referansı döndürür $array[$key]
. Dizin mevcut değilse, null
değeriyle yeni bir dizin
oluşturulur.
get() işlevinin yanı sıra çok boyutlu dizilerle de çalışır.
grep(array $array, string $pattern, bool $invert=false): array
Yalnızca $pattern
düzenli ifadesiyle eşleşen dizi öğelerini döndürür. $invert
true
ise, eşleşmeyen öğeleri döndürür. Regex derleme veya çalışma zamanı hatası
Nette\RegexpException
atar.
insertAfter(array &$array, string|int|null $key, array $inserted): void
$inserted
dizisinin içeriğini $key
dizisinden hemen sonra $array
dizisine ekler.
$key
dizisi null
dizisi ise (veya yoksa), dizinin sonuna eklenir.
insertBefore(array &$array, string|int|null $key, array $inserted): void
$inserted
dizisinin içeriğini $key
'den önce $array
'e yerleştirir.
$key
, null
ise (veya yoksa), başa yerleştirilir.
invoke(iterable $callbacks, …$args): array
Tüm geri çağırmaları çağırır ve sonuç dizisini döndürür.
invokeMethod(iterable $objects, string $method, …$args): array
Bir dizideki her nesne üzerinde yöntem çağırır ve sonuç dizisini döndürür.
isList(array $array): bool
Dizinin sıfırdan itibaren artan sırada sayısal anahtarlarla indislenip indislenmediğini denetler.
last(array $array, ?callable $predicate=null, ?callable $else=null): mixed
Son öğeyi döndürür (verilmişse belirtilen yüklemle eşleşen). Böyle bir öğe yoksa, $else
çağrısının sonucunu veya null döndürür.
$predicate
, function ($value, int|string $key, array $array): bool
imzasına sahiptir.
end()
adresinden farklı olarak dahili işaretçiyi değiştirmez. $predicate
ve $else
parametreleri 4.0.4 sürümünden beri mevcuttur.
First() işlevine bakın.
lastKey(array $array, ?callable $predicate=null): int|string|null
Son öğenin anahtarını (verilmişse belirtilen yüklemle eşleşen) veya böyle bir öğe yoksa null döndürür.
$predicate
, function ($value, int|string $key, array $array): bool
imzasına sahiptir.
firstKey() işlevine bakın.
map(array $array, callable $transformer): array
Dizideki tüm öğeler üzerinde $transformer
adresini çağırır ve dönüş değerleri dizisini döndürür.
Geri arama function ($value, $key, array $array): bool
imzasına sahiptir.
mapWithKeys(array $array, callable $transformer): array
Orijinal dizinin değerlerini ve anahtarlarını dönüştürerek yeni bir dizi oluşturur. $transformer
işlevi
function ($value, $key, array $array): ?array{$newValue, $newKey}
imzasına sahiptir. $transformer
işlevi null
döndürürse, eleman atlanır. Tutulan elemanlar için, döndürülen dizinin ilk elemanı yeni anahtar
ve ikinci elemanı yeni değer olarak kullanılır.
Bu yöntem, bir dizinin yapısını (hem anahtarları hem de değerleri aynı anda) değiştirmeniz veya dönüştürme sırasında öğeleri filtrelemeniz (istenmeyen öğeler için null döndürerek) gereken durumlarda kullanışlıdır.
mergeTree(array $array1, array $array2): array
İki alanı özyinelemeli olarak birleştirir. Örneğin, ağaç yapılarını birleştirmek için kullanışlıdır. Dizi
için +
operatörü gibi davranır, yani ikinci diziden bir anahtar/değer çiftini birincisine ekler ve bir anahtar
çakışması durumunda ilk dizideki değeri korur.
İkinci dizideki değerler her zaman birinciye eklenir. İkinci diziden 10
değerinin kaybolması biraz kafa
karıştırıcı görünebilir. Bu değerin yanı sıra 5
in the first array have the same numeric key 0
değerinin de kaybolduğuna dikkat edilmelidir, bu nedenle ortaya çıkan alanda yalnızca ilk diziden bir öğe vardır.
normalize(array $array, ?string $filling=null): array
Diziyi ilişkisel diziye normalleştirir. Sayısal anahtarları değerleriyle değiştirin, yeni değer $filling
olacaktır.
pick(array &$array, string|int $key, ?mixed $default=null): mixed
Bir diziden bir öğenin değerini döndürür ve kaldırır. Mevcut değilse, bir istisna atar veya sağlanmışsa
$default
döndürür.
renameKey(array &$array, string|int $oldKey, string|int $newKey): bool
Bir anahtarı yeniden adlandırır. Anahtar dizide bulunmuşsa true
döndürür.
getKeyOffset(array $array, string|int $key): ?int
Verilen dizi anahtarının sıfır indeksli konumunu döndürür. Anahtar bulunamazsa null
döndürür.
some(array $array, callable $predicate): bool
Dizideki en az bir öğenin function ($value, $key, array $array): bool
imzasıyla sağlanan geri arama
tarafından uygulanan testi geçip geçmediğini sınar.
Bkz. every().
toKey(mixed $key): string|int
Bir değeri, tamsayı veya dize olan bir dizi anahtarına dönüştürür.
toObject(iterable $array, object $object): object
$array
dizisinin öğelerini $object
nesnesine kopyalar ve sonra geri döndürür.
wrap(array $array, string
$prefix=''
, string $suffix=''
): array
Dizinin her bir elemanını dizeye dönüştürür ve $prefix
ve $suffix
ile çevreler.
ArrayHash
Object Nette\Utils\ArrayHash genel sınıf stdClass'ın soyundan gelir ve onu bir dizi olarak ele alma, örneğin köşeli parantez kullanarak üyelere erişme becerisine genişletir:
Eleman sayısını elde etmek için count($hash)
işlevini kullanabilirsiniz.
Bir nesne üzerinde, bir dizide yaptığınız gibi, hatta bir referansla bile yineleme yapabilirsiniz:
Mevcut diziler from()
kullanılarak ArrayHash
adresine dönüştürülebilir:
Dönüşüm özyinelemelidir:
İkinci parametre ile önlenebilir:
Diziye geri dönüştürün:
ArrayList
Nette\Utils\ArrayList indislerin yalnızca 0'dan itibaren artan tamsayılar olduğu doğrusal bir diziyi temsil eder.
Öğe sayısını almak için count($list)
işlevini kullanabilirsiniz.
Bir nesne üzerinde, bir dizide yaptığınız gibi, hatta bir referansla bile yineleme yapabilirsiniz:
Mevcut diziler from()
kullanılarak ArrayList
adresine dönüştürülebilir:
İzin verilen değerlerin ötesindeki anahtarlara erişmek bir istisna oluşturur Nette\OutOfRangeException
:
Anahtarın çıkarılması elemanların yeniden numaralandırılmasına neden olacaktır:
prepend()
adresini kullanarak başlangıca yeni bir öğe ekleyebilirsiniz: