Funkcije polja
Ta stran govori o razredih Nette\Utils\Arrays, ArrayHash in ArrayList, ki so povezani z polji.
Namestitev:
Mreže
Nette\Utils\Arrays je statični razred, ki vsebuje nekaj priročnih funkcij za polja. Njegov ekvivalent za iteratorje je Nette\Utils\Iterables.
Naslednji primeri predpostavljajo, da je definiran naslednji vzdevek razreda:
associate(array $array, mixed $path): array|\stdClass
Funkcija fleksibilno preoblikuje $array
v asociativno polje ali predmete v skladu z določeno potjo
$path
. Pot je lahko niz ali polje. Sestavljena je iz imen ključev v vhodnem polju in operatorjev, kot so „[]“,
„->“, „=“ in „|“. Če je pot neveljavna, se vrže Nette\InvalidArgumentException
.
contains(array $array, $value): bool
Preizkusi polje glede prisotnosti vrednosti. Uporablja strogo primerjavo (===
)
every(array $array, callable $predicate): bool
Preizkusi, ali vsi elementi v polju prestanejo test, ki ga izvaja navedena funkcija s podpisom
function ($value, $key, array $array): bool
.
Glejte some().
filter(array $array, callable $predicate): array
Vrne novo polje, ki vsebuje vse pare ključ-vrednost, ki ustrezajo danemu $predicate
. Povratni klic ima podpis
function ($value, int|string $key, array $array): bool
.
first(array $array, ?callable $predicate=null, ?callable $else=null): mixed
Vrne prvi element (ki ustreza določenemu predikatu, če je podan). Če takega elementa ni, vrne rezultat klica
$else
ali nič.
$predicate
ima podpis function ($value, int|string $key, array $array): bool
.
Za razliko od reset()
ne spreminja notranjega kazalca. Parametra $predicate
in $else
obstajata od različice 4.0.4.
Glej last().
firstKey(array $array, ?callable $predicate=null): int|string|null
Vrne ključ prvega elementa (ki ustreza določenemu predikatu, če je podan) ali nič, če takega elementa ni.
$predicate
ima podpis function ($value, int|string $key, array $array): bool
.
Glej lastKey().
flatten(array $array, bool $preserveKeys=false): array
Večdimenzionalno polje pretvori v ravno polje.
get(array $array, string|int|array $key, ?mixed $default=null): mixed
Vrne $array[$key]
item. Če ne obstaja, se vrže Nette\InvalidArgumentException
, razen če je kot
tretji argument določena privzeta vrednost.
Argument $key
je lahko tudi polje.
getRef(array &$array, string|int|array $key): mixed
Pridobi referenco na dani $array[$key]
. Če indeks ne obstaja, se ustvari nov indeks z vrednostjo
null
.
Deluje z večdimenzionalnimi polji in funkcijo get().
grep(array $array, string $pattern, bool $invert=false): array
Vrne samo tiste elemente polja, ki ustrezajo regularnemu izrazu $pattern
. Če je $invert
true
, vrne elemente, ki se ne ujemajo. Napaka pri sestavljanju ali izvajanju regexa vrže
Nette\RegexpException
.
insertAfter(array &$array, string|int|null $key, array $inserted): void
Vsebino polja $inserted
vstavi v polje $array
takoj za $key
. Če je $key
null
(ali ne obstaja), se vstavi na konec.
insertBefore(array &$array, string|int|null $key, array $inserted): void
Vsebino polja $inserted
vstavi v polje $array
pred $key
. Če je $key
null
(ali ne obstaja), se vstavi na začetek.
invoke(iterable $callbacks, …$args): array
Prikliče vse povratne klice in vrne polje rezultatov.
invokeMethod(iterable $objects, string $method, …$args): array
Prikliče metodo za vsak predmet v polju in vrne polje rezultatov.
isList(array $array): bool
Preveri, ali je polje indeksirano v naraščajočem vrstnem redu številskih ključev od nič, tj. seznam.
last(array $array, ?callable $predicate=null, ?callable $else=null): mixed
Vrne zadnji element (ki ustreza določenemu predikatu, če je podan). Če takega elementa ni, vrne rezultat klica
$else
ali nič.
$predicate
ima podpis function ($value, int|string $key, array $array): bool
.
Za razliko od end()
ne spreminja notranjega kazalca. Parametra $predicate
in $else
obstajata od različice 4.0.4.
Glej first().
lastKey(array $array, ?callable $predicate=null): int|string|null
Vrne ključ zadnjega elementa (ki ustreza določenemu predikatu, če je podan) ali nič, če takega elementa ni.
$predicate
ima podpis function ($value, int|string $key, array $array): bool
.
Glej firstKey().
map(array $array, callable $transformer): array
Kliče $transformer
na vse elemente v polju in vrne polje vrnjenih vrednosti. Povratni klic ima podpis
function ($value, $key, array $array): bool
.
mapWithKeys(array $array, callable $transformer): array
Ustvari novo polje s preoblikovanjem vrednosti in ključev prvotnega polja. Funkcija $transformer
ima podpis
function ($value, $key, array $array): ?array{$newValue, $newKey}
. Če $transformer
vrne
null
, se element preskoči. Pri ohranjenih elementih se prvi element vrnjenega polja uporabi kot novi ključ, drugi
element pa kot nova vrednost.
Ta metoda je uporabna v primerih, ko je treba spremeniti strukturo polja (hkrati ključe in vrednosti) ali filtrirati elemente med transformacijo (tako, da se za neželene elemente vrne ničla).
mergeTree(array $array1, array $array2): array
Rekurzivno združi dve polji. Uporabna je na primer za združevanje drevesnih struktur. Obnaša se kot operator +
za polje, tj. doda par ključ/vrednost iz drugega polja v prvo in v primeru trka ključev ohrani vrednost iz prvega polja.
Vrednosti iz drugega polja se vedno dodajo prvemu. Izginotje vrednosti 10
iz drugega polja se lahko zdi nekoliko
zmedeno. Opozoriti je treba, da je ta vrednost kot tudi vrednost 5
in the first array have the same numeric key
0
, zato je v dobljenem polju samo element iz prvega polja.
normalize(array $array, ?string $filling=null): array
Normalizira polje v asociativno polje. Numerične ključe zamenja z njihovimi vrednostmi, nova vrednost bo
$filling
.
pick(array &$array, string|int $key, ?mixed $default=null): mixed
Vrne in odstrani vrednost elementa iz polja. Če ne obstaja, vrže izjemo ali vrne $default
, če je naveden.
renameKey(array &$array, string|int $oldKey, string|int $newKey): bool
Preimenuje ključ. Če je bil ključ najden v polju, vrne true
.
getKeyOffset(array $array, string|int $key): ?int
Vrne ničelno indeksiran položaj danega ključa v polju. Vrne null
, če ključa ni mogoče najti.
some(array $array, callable $predicate): bool
Preizkusi, ali vsaj en element v polju prestane test, ki ga izvaja posredovani povratni klic s podpisom
function ($value, $key, array $array): bool
.
Glej every().
toKey(mixed $key): string|int
Pretvori vrednost v ključ polja, ki je bodisi celo število bodisi niz.
toObject(iterable $array, object $object): object
Kopira elemente polja $array
v objekt $object
in ga nato vrne.
wrap(array $array, string
$prefix=''
, string $suffix=''
): array
Vsak element polja pretvori v niz in ga obkroži z objektoma $prefix
in $suffix
.
ArrayHash
Objekt Nette\Utils\ArrayHash je potomec generičnega razreda stdClass in ga razširi na možnost, da ga obravnava kot polje, na primer dostop do članov z uporabo oglatih oklepajev:
Za pridobitev števila elementov lahko uporabite funkcijo count($hash)
.
Po objektu lahko iterirate tako kot po polju, tudi z referenco:
Obstoječa polja lahko pretvorite v ArrayHash
z uporabo from()
:
Pretvorba je rekurzivna:
Lahko se ji izognemo z drugim parametrom:
Preoblikovanje nazaj v polje:
ArrayList
Nette\Utils\ArrayList predstavlja linearno polje, v katerem so indeksi samo cela števila, naraščajoča od 0.
Za pridobitev števila elementov lahko uporabite funkcijo count($list)
.
Po predmetu lahko iterirate tako kot po polju, tudi z referenco:
Obstoječa polja lahko pretvorite v ArrayList
z uporabo from()
:
Dostop do ključev, ki presegajo dovoljene vrednosti, vrže izjemo Nette\OutOfRangeException
:
Odstranitev ključa povzroči preštevilčenje elementov:
Na začetek lahko dodate nov element z uporabo prepend()
: