Редактировать : Я не понял, что они хотели специально проверить, является ли объект SimpleXMLElement пустым. Я оставил старый ответ ниже
Обновленный ответ (SimpleXMLElement) :
Для SimpleXMLElement:
Если под пустым вы подразумеваете, что не имеет свойств:
$obj = simplexml_load_file($url);
if ( !$obj->count() )
{
// no properties
}
OR
$obj = simplexml_load_file($url);
if ( !(array)$obj )
{
// empty array
}
Если SimpleXMLElement имеет глубину в один уровень, и под пустым вы на самом деле имеете в виду, что он имеет только свойства PHP считает Falsey (или не имеет свойств):
$obj = simplexml_load_file($url);
if ( !array_filter((array)$obj) )
{
// all properties falsey or no properties at all
}
Если SimpleXMLElement имеет глубину более одного уровня, вы можете начать с преобразования его в чистый массив:
$obj = simplexml_load_file($url);
// `json_decode(json_encode($obj), TRUE)` can be slow because
// you're converting to and from a JSON string.
// I don't know another simple way to do a deep conversion from object to array
$array = json_decode(json_encode($obj), TRUE);
if ( !array_filter($array) )
{
// empty or all properties falsey
}
Старый ответ (простой объект) :
Если вы хотите проверить, является ли простой объект (тип stdClass
) полностью пустым (без ключей / значений), вы можете сделать следующее:
// $obj is type stdClass and we want to check if it's empty
if ( $obj == new stdClass() )
{
echo "Object is empty"; // JSON: {}
}
else
{
echo "Object has properties";
}
Источник: http://php.net/manual/en/language.oop5.object-comparison.php
Редактировать : добавлен пример
$one = new stdClass();
$two = (object)array();
var_dump($one == new stdClass()); // TRUE
var_dump($two == new stdClass()); // TRUE
var_dump($one == $two); // TRUE
$two->test = TRUE;
var_dump($two == new stdClass()); // FALSE
var_dump($one == $two); // FALSE
$two->test = FALSE;
var_dump($one == $two); // FALSE
$two->test = NULL;
var_dump($one == $two); // FALSE
$two->test = TRUE;
$one->test = TRUE;
var_dump($one == $two); // TRUE
unset($one->test, $two->test);
var_dump($one == $two); // TRUE