This question already has an answer here:
- php SimpleXML check if a child exists 15 answers
I have the following (simplified XML):
<?xml version="1.0" encoding="UTF-8" ?>
<products>
<product>
<artnr>xxx1</artnr>
</product>
</products>
And the following (again simplified PHP code):
$xml= @simplexml_load_file($filename);
foreach ($xml->product as $product) {
if (!$this->validate_xml_product($product)) {
continue;
}
}
function validate_xml_product($product)
{
if (!property_exists('artnr', $product)) {
// why does it always validate to true?
}
}
For some reason the product never validates.
Isn't property_exists the correct way of finding out whether there is an artnr element in $product?
Use:
I think the arguments are crossed. First param should be the class, second the property...
http://php.net/manual/de/function.property-exists.php
The order of parameter in your code is reversed. Correct is first the object then the property-name:
And apparently this only works for "real" properties. If the property is implemented using the
__get
-Method this won't work either.