The {code...} game property does not exist, but var_dump has a result. why?
$ Xml_str = <
CNY
SUCCESS
NATIVE
EOT; $ obj = simplexml_load_string ($ xml_str); var_dump ($ obj-> game); if (empty ($ obj-> game) {echo 'Empty ';} else {echo "not empty ";}
The game attribute does not exist, but var_dump has a result. why?
Reply content:
$ Xml_str = <
CNY
SUCCESS
NATIVE
EOT; $ obj = simplexml_load_string ($ xml_str); var_dump ($ obj-> game); if (empty ($ obj-> game) {echo 'Empty ';} else {echo "not empty ";}
The game attribute does not exist, but var_dump has a result. why?
AlthoughgameThe property does not exist, but it is called when the property is obtained directly.SimpleXMLElementMagic method__get()This method returns an empty object andvar_dumpPrinted.
Howeverempty()It should be true. why is it false?
Becauseempty()It is not a direct Boolean judgment,empty($var) === isset($var) && $varSo we will callSimpleXMLElementMagic method__isset(), And__isset()The returned property does not exist.__get()It is automatically skipped.
BecausesimplexmlelementInternal ImplementationsetterAndgetter, Just like a magic method__set()And__get(),