Autor Zpráva
alfa47
Profil
Ahojte,

myslite, ze daju sa tieto dva riadky napisat jednym riadkom? Nejake elegantne riesenie?

$nazov = split("sep", urldecode($k));
$nazov = $nazov[1];

Ja by som si predstavoval nieco taketo: $nazov = split("sep", urldecode($k))[1]; lenze som asi prilis naivny ;-))) Python je asi elegantnejsi.

Vopred dakujem.
Someone
Profil
Od jisté verze PHP to lze, ale nejsem si jistý od které. Každopádně místo split() použij explode():
<?php
    $nazov = explode("sep",urldecode($k))[1];
?>
alfa47
Profil
Someone:
a vies mi povedat, preco explode a nie split? Ake su tam vyhody?
Jan Tvrdík
Profil
alfa47:
Kdyby ses podíval do dokumentace, tak by sis zřejmě všiml velkého výstražného varování „This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.“. Kromě toho funkce split rozděluje řetězec regulárním výrazem, což tady nechceš (resp. nepotřebuješ).
alfa47
Profil
Someone:
Vyzera, ze explode("sep",urldecode($k))[1]; nefunguje, ako viem prosim Ta zistit, od ktorej verzie to takto moze ist?

Vopred dakujem velmi pekne.
Jan Tvrdík
Profil
alfa47:
Od 5.4.0, viz 3v4l.org/PLpD1.
Tori
Profil
Ještě by šlo použít array_slice.
↓ a jo vlastně, dík.
Radek9
Profil
Tori:
To ale vrací taky pole.

Teoreticky je možné si tu funkčnost z 5.4 nahradit vlastní funkcí:
function index($array, $index = 0) {
  return $array[$index];
}

$nazov = index(explode("sep",urldecode($k)), 1);
Jan Tvrdík
Profil
Spíš doporučuji najít webhosting s PHP 5.4 nebo 5.5.
alfa47
Profil
Jan Tvrdík:
inak take, ze:

$trieda = new Trieda().metoda();

este nefunguje? Alebo retazenie metod? Ono by to velmi urychlovalo kod.
Tori
Profil
(new Trieda())->metoda() od PHP 5.4, viz http://www.php.net/manual/en/migration54.new-features.php
Pokud metoda vrací $this (nebo jinou instanci), lze řetězit:
$jidlo = (new Polivka())->pridej('masox')->pridej('cibuli')->pridej('kroupy')->pridej('sekerku')->uvar();
(jestli jste myslel něco takového).
alfa47
Profil
Tori:
Super, vdaka :) To aby som si dal PHP 5.4, teraz mam 5.3 a bojim sa to menit, lebo to mam cez XAMPP a mozno sa mi to cele pokazi. ;-((

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: