Here is my code:
<?php
$madeUpObject = new \stdClass();
$madeUpObject->madeUpProperty = "abc";
echo $madeUpObject->madeUpProperty;
echo "<br />";
if (property_exists('stdClass', 'madeUpProperty')) {
echo "exists";
} else {
echo "does not exist";
}
?>
And the output is:
abc does not exist
So why does this not work?
Try:
if( property_exists($madeUpObject, 'madeUpProperty')) {
Specifying the class name (instead of the object like I have done) means in the stdClass definition, you'd need the property to be defined.
You can see from this demo that it prints:
abc
exists
Because stdClass does not have any properties. You need to pass in $madeUpObject:
property_exists($madeUpObject, 'madeUpProperty');
The function's prototype is as follows:
bool property_exists ( mixed $class, string $property )
The $class parameter must be the "class name or an object of the class". The $property must be the name of the property.
Unless you're concerned about NULL values, you can keep it simple with isset.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With