Подскажите почему в данном случае условие показывает что объект непустой? И как проверять объект на пустоту? PHP: $a = (object)[]; // вывод: no, хотя объект пустой if( empty($a) ){ echo 'yes'; } else{ echo 'no'; }
Протестируй,выведи $a,проверь че там Код (Text): $a = (object)[]; // вывод: no, хотя объект пустой if( empty($a) ){ echo '$a = '.$a; } else{ echo 'no'; }
PHP: <? $a = (object)[]; // вывод: yes, объект пустой if(count((array)$a)) { echo 'no'; } else { echo 'yes'; } ### или так #### // вывод: yes, объект пустой if ($a == new stdClass()) { echo "yes"; } else { echo "no"; } ?>
Скорее всего $a существует,но = пустое место Я давно про эти косяки знаю,и пишу так: PHP: $a = (object)[]; // вывод: no, хотя объект пустой if( $a>' ' ){ echo 'yes'; } else if($a<' ' || !$a) { echo 'no'; } Но я не профессионал,я самоучка
преобразуй в массив например PHP: $a = (object)[]; if (count((array)$a) > 0) { echo 'не пусто'; } else { echo 'пусто; } или проверь конкретное свойство объекта PHP: $a = (object)[]; if (property_exists($a, 'НАЗВАНИЕ')) { echo 'не пусто'; } else { echo 'пусто'; } ну и вообще перед проверкой var_dump($a) шо там?
если класс имеет экземпляр stdClass, то проверить можно с помощью get_object_vars. Но если экземпляр класса имеет приватные свойства, то никак.
Вопрос был изначально не о "...", а как проверить объект на пустоту. Исходя из не знаний, прокомментирую более детально, что данная конструкция создает экземпляр класса stdClass. Как узнать, тут уже сам, т.к. это тривиальный момент. Этот класс, насколько я лично знаю, может иметь только публичные свойства. Следовательно, мы можем посчитать сколько у него этих свойств. А чтобы проверить эти свойства, каждые, можно воспользоваться функцией с некой логикой: PHP: // result array 1, true array_diff ( [ 1, 0, false, true, null ], [ null, 0 ] ) Проверять сам объект с помощью конструкции empty или каким-либо другим подобным методом, неверно. Сам объект и есть "тело". Если зайти еще дальше, то вопрос "как проверить объект пустой или нет?" некорректен. Далее, выше описанное не имеет никакого отношения к анонимным, closure экземплярам. У них совсем другая вселенная.
Потому что empty свой аргумент приводит к типу boolean, и обьекты по умолчанию приводятся к true, если у них это не переопределено.