Autor Zpráva
H13
Profil
Ahoj, potřeboval bych s něčím poradit, v něčem se vyznat:

Je !$objekt->jmeno != 'Jmeno' stejné jako $objekt->jmeno == 'Jmeno' nebo je v tom nějaký háček něco jako:

$objekt->jmeno != 'Jmeno' --> objekt se nerovná 'Jmeno'
$objekt->jmeno == 'Jmeno' --> objekt se rovná 'Jmeno'
!$objekt->jmeno != 'Jmeno' --> neexistuje objekt, který se nerovná 'Jmeno'
!$objekt->jmeno == 'Jmeno' --> neexistuje objekt, který se rovná 'Jmeno'

Rozebírám jeden skript a potřeboval bych vědět co to znamená...

Díky za radu...

Honza
rack
Profil *
Bude lepší to vyzkoušet. Každopádně pokud !$objekt->jmeno bude vracet true/false podle toho, zda dana vlastnost existuje nebo ne, pak mi posledni dva vyrazy nedavaji smysl. Nebo $objekt->jmeno je BOOL a potom ten vyraz nema zadnou logiku.
Předpokládám, že se jedná o abstraktní příklad a proto bude dobré se v konkrétním případě podívat jakých typů jsou jednotlivé proměnné / vlastnosti.
Mastodont
Profil
!$objekt->jmeno bude vracet true/false podle toho, zda dana vlastnost existuje nebo ne¨

Nemohi si to teď zkusit, ale zápis !$objekt->jmeno podle mne vrací negaci HODNOTY vlastnosti jmeno, ne to, zda tato vlastnost existuje či ne.
H13
Profil
Tak dostávám různé výsledky:

if (isset($objekt->jmeno))
{
	echo "objekt existuje, " . $objekt->jmeno . ", ";
	if(!$objekt->jmeno != 'Jmeno')
	{
		echo "1";
	}
	else
	{
		echo "0";
	}
}


Výsledek: objekt existuje, JineJmeno, 1

if (isset($objekt->jmeno))
{
	echo "objekt existuje, " . $objekt->jmeno . ", ";
	if($objekt->jmeno == 'Jmeno')
	{
		echo "1";
	}
	else
	{
		echo "0";
	}
}


Výsledek: objekt existuje, JineJmeno, 0
Mastodont
Profil
Ano, to je naprosto v pořádku. V prvním bloku máš
!$objekt->jmeno


což je false a false se zcela určitě nerovná řetězci "Jmeno", takže podmínka splněna JE a spustíš první echo.

Ve druhém případě podmínka "JineJmeno" == "Jmeno" splněna NENÍ a proto spustíš druhé echo.
H13
Profil
To tedy znamená, že:
!$objekt->jmeno != 'Jmeno' není stejné jako $objekt->jmeno == 'Jmeno'
Mastodont
Profil
Není, ale pro $objekt->jmeno = 'Jmeno' to vyjde stejně.

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: