Autor Zpráva
gaminn
Profil *
Zdravím, nikde jsem odpověď nenašel, proto se chci zeptat tady - existuje nějaký jednoduchý způsob, jak pracovat s posledním prvkem v poli? Tedy, abych nemusel používat $ar[Count($ar)-1]='hodnota posledního prvku', ale něco jednoduššího. Díky.
jozob
Profil
Na čo to potrebuješ?
Havel-st
Profil *
možná:

$pole = array_reverse($pole);
echo $pole[0];
gaminn
Profil *
To je celkem jedno, na co to potřebuji, jednoduše to používám celkem často ve svých skriptech, tak mě napadlo, jestli by to nešlo napsat nějak zkráceně.

Prohodit prvky polí by samozřejmě šlo, ale to už můžu klidně využívat tu svoji metodu, která bude asi přívětivější k serveru (co se týče náročnosti).
Anonymní
Profil *
zpočti si pomocí count() počet prvků v poli, odečti jedna a zjistíš index posledního prvku.
Michalek
Profil
Anonymní
Přečti si dotaz a zjistíš, že to tam už je... Hledá se něco lehčího.
Oswald
Profil

echo 'Poslední prvek: ' . end($array);
gaminn
Profil *
Oswald: Jj, toto mě taky napadlo, ale bohužel není možnost, jak do posledního prvku pole přiřazovat hodnoty, funkce end($array) sice vrátí hodnotu posledního prvku pole, ale samozřejmě nenabízí možnost, jak hodnoty nastavovat (něco na způsob end($array)='nova_hodnota' je samozřejmě blbost).

OK, tím vypadá toto téma za uzavřené, požadovaný parametr pole neexistuje;) Budu si muset tedy vystačit s tím, co používám doteď. Všem díky.
gaminn
Profil *
I když tedy, zase mi tak došlo (:)), i ta možnost s Count() není ideální, co když mám nadefinované prvky s indexy 0,1,3,8 a chci takto pracovat s posledním prvkem. $ar[Count($ar)-1]='hodnota' nastaví novou hodnotu v tomto případě prvku s indexem 3....
jozob
Profil
gaminn
Nefungujú konštanty náhodou tak, že sa im priradí hodnota až pri zaápise?
toto na zaciatku skriptu, resp. v konf. subore: define(X,count($ar)-1);
a potom uz len: $posl = $ar[X];
Neviem, či to funguje práve v PHPéčku, ale zdá sa mi, že v nejakom jazyku to predsa len ide... no veď skús...
A druhá možnosť ako to skrátiť je vytvorenie funkcie:
function X($nazov_pola)
{
return count($$nazov_pola)-1;
}
A potom už len zápis: $posl = $ar[X($ar)];

*Pokiaľ niekto nerozumel zápisu "$$", je to použitie tzv. chameleon premennej, ked sa nazov premennej vytvorí z názvu premennej, ktorá sa nachádza na druhom mieste... malý príklad:

$a="test";
$b="a";

echo $$b; // Vypise "test"

Funguje to do nekonečného vnorovania:

$a="test";
$b="a";
$c="b";
$d="c";

echo $$$$d; // Vypíše "test"

To bola mala lekcia PHP, dúfam, že to pomôže, ak to niekto pred tým nepoznal :-)
mila
Profil
Když se podíváš do diskuze v manuálu k funkci end, pravděpodobně tam najdeš řešení svého problému.
gaminn
Profil *
jozob: Definovat si konstantu je pro mě nepoužitelné, počet položek pole se v průběhu zpracování skriptu mění. Funkci vracející index posledního prvku pole jsem měl přesně takovou;)

mila: Díky, našel jsem to tam. Stačí to trochu upravit a bude to perfektně sloužit svému účelu.
jozob
Profil
gaminn
Ale asi si nepochopil, o čo mi ide... Neviem či to funguje, ale zdá sa mi, že hodnota konštanty sa vyhodnocuje až keď k nej pristupuješ...
gaminn
Profil *
Do konstanty je samozřejmě zapsána hodnota při její definici, právě proto to jsou konstanty. Jejich hodnota se v průběhu skriptu nemění, takže žádná její hodnota se nevyhodnocuje.
jozob
Profil
Práve že nie som si istý... viem, že v niektorom jazyku to bolo tak ako som písal... ale neviem, či v PHPčku...
gaminn
Profil *
PHP to určitě nebylo;)
jozob
Profil
ok
Toto téma je uzamčeno. Odpověď nelze zaslat.

0