Portál AbcLinuxu, 13. května 2025 19:05

Dotaz: Problém v php s isset()

18.11.2014 13:58 PHP
Problém v php s isset()
Přečteno: 242×
Odpovědět | Admin
Ahoj. Mám takový zvlášní problém, se kterým nemůžu hnout.

když dám
var_dump($obj->foo);
dostanu výsledek
array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }
a když dám podmínku
if(isset($obj->foo)) echo "IF";            	
else                 echo "ELSE";    
dostanu výsledek ELSE... ale sakra proč ? Poradí nějaký guru ? Děkuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.11.2014 14:10 NN
Rozbalit Rozbalit vše Re: Problém v php s isset()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja urcite nejsem guru, ale v manualu isset() se pise, ze $obj->foo, neni promenna a bude vzdy FALSE..
18.11.2014 14:22 PHP
Rozbalit Rozbalit vše Re: Problém v php s isset()
Hm, a existuje způsob jak to ověřit?
18.11.2014 14:23 Ivan Nový
Rozbalit Rozbalit vše Re: Problém v php s isset()
a ještě doplnění vypište si print_r($obj);
18.11.2014 14:26 Ivan Nový
Rozbalit Rozbalit vše Re: Problém v php s isset()
To je blbost, protože to funguje, když $obj je například StdClass. Nefunguje to, když $obj je array.
18.11.2014 14:20 Ivan Nový
Rozbalit Rozbalit vše Re: Problém v php s isset()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Určitě tam máte něco takového: $obj = array(); $obj->foo = array('a', 'b');

if (isset($obj->foo)) echo "IF"; else echo "ELSE";
místo $obj = new StdClass; $obj->foo = array('a', 'b');

if (isset($obj->foo)) echo "IF"; else echo "ELSE";
18.11.2014 14:38 PHP
Rozbalit Rozbalit vše Re: Problém v php s isset()
Mám to takto
$obj = new Class();
$obj->foo = array('a', 'b'); 
18.11.2014 15:00 Ivan Nový
Rozbalit Rozbalit vše Re: Problém v php s isset()
Tak takto to rozhodně nemáte, Class je vyhrazené klíčové slovo, které nelze použít jako identifikátor. Tak jak to mátre, vám to vyhodí syntaktickou chybu. Když si nadefinujete třídu například class Classy {}, jen takto, tak to funguje podle očekávání, vypíše IF.
18.11.2014 15:15 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Problém v php s isset()
Mělo by to vypadat spíš takto:
$obj = new stdClass();
$obj->foo = array('a', 'b'); 
ale stejně by se s takovými objekty mělo šetřit.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
18.11.2014 15:30 PHP
Rozbalit Rozbalit vše Re: Problém v php s isset()
ale stejně by se s takovými objekty mělo šetřit.
můžete to prosím upřesnit?
18.11.2014 15:42 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Problém v php s isset()
Takový objekt nemá žádné metody, nedá se tedy používat jako objekt, ale jen jako "datové skladiště". Nedá se tedy použít pro objektové, ale pouze pro strukturované programování.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
18.11.2014 15:29 PHP
Rozbalit Rozbalit vše Re: Problém v php s isset()
To byl příklad...
Josef Kufner avatar 18.11.2014 17:20 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Problém v php s isset()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ukaž ten kód celý. Chybu máš někde jinde.
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.