проверка на пустой объект php

Как проверить, что объект пуст в PHP?

Как найти, является ли объект пустым или нет в PHP.

Вы можете использовать массив, а затем проверить, является ли он пустым или нет.

Изменить: однострочное типизирование, как показано ниже, не работает в PHP 5.4:

Изменить : я не понимал, что они хотят конкретно проверить, не является ли объект SimpleXMLElement пустым. Я оставил старый ответ ниже

Обновленный ответ (SimpleXMLElement) :

Если по пустому вы имеете в виду не имеет свойств:

Если SimpleXMLElement имеет один уровень глубины и пустым, вы на самом деле означаете, что он имеет только свойства, которые PHP считает ложными (или без свойств):

Если SimpleXMLElement имеет более одного уровня, вы можете начать с преобразования его в чистый массив:

Старый ответ (простой объект) :

Если вы хотите проверить, является ли простой объект (тип stdClass ) полностью пустым (нет ключей / значений), вы можете сделать следующее:

Изменить : добавлен пример

Еще одно возможное решение, которое не требует литья в array :

Вы можете передать свой объект в массив и проверить его так:

Поэтому вы можете использовать count() (если объект является Countable ).

Это очень простое решение, которое я использую в JavaScript. В отличие от упомянутого решения, которое бросает объект в массив и проверяет, является ли оно пустым, или для его кодирования в JSON, эта простая функция очень эффективна в отношении используемых ресурсов для выполнения простой задачи.

Решение работает очень просто: он вообще не будет вводить петлю foreach, если объект пуст, и он вернет true. Если он не пуст, он войдет в цикл foreach и сразу вернет false, а не через весь набор.

Уже есть правильный ответ, но я отправляю его снова. Я понимаю, что PHP – это грязный язык, но cmon guys … Представьте себе, если объект не пуст и в каком-то смысле довольно большой, зачем вам тратить ресурсы, чтобы отбросить его на массив или сериализовать его …

нет единственного безопасного способа проверить, нет ли объекта

php count () сначала приводит к массиву, но литье может создавать пустой массив, зависит от того, как реализуется объект (объекты объектов расширения часто затрагиваются этими проблемами)

Если вы нарисуете что-нибудь в PHP как (bool), он сразу скажет вам, является ли объект объектом, примитивным типом или нулем. Используйте следующий код:

Если объект «пуст» или нет, это вопрос определения, и поскольку он зависит от характера объекта, который представляет класс, он должен определить класс.

Сам PHP рассматривает каждый экземпляр класса как не пустой.

Короче говоря, вам придется придумать свои собственные критерии для конкретного объекта и проверить их соответственно, либо вне объекта, либо из самописного метода isEmpty() в объекте.

Я использовал json_decode строки в почтовом запросе. Ни один из вышеперечисленных не работал для меня, в конце я использовал это:

Источник

Как проверить, что объект пуст в PHP?

Как узнать, пуст ли объект в PHP или нет.

Решение

Вы можете привести к массиву, а затем проверить, является ли он пустым или нет

Редактировать: однострочная типизация, как показано ниже, не работает в PHP 5.4:

Другие решения

редактироватьЯ не осознавал, что они хотели специально проверить, является ли объект SimpleXMLElement пустым. Я оставил старый ответ ниже

Обновленный ответ (SimpleXMLElement):

Если под пустым вы подразумеваете, что не имеет свойств:

Если SimpleXMLElement имеет глубину в один уровень, а под пустым вы на самом деле имеете в виду, что он имеет только PHP считает фальси (или нет свойств):

Если SimpleXMLElement имеет глубину более одного уровня, вы можете начать с преобразования его в чистый массив:

Старый ответ (простой объект):

Если вы хотите проверить, является ли простой объект (введите stdClass ) полностью пусто (без ключей / значений), вы можете сделать следующее:

редактировать: добавлен пример

Вы можете привести ваш объект в массив и проверить его количество следующим образом:

Другое возможное решение, которое не нуждается в приведении к array :

Представьте, что объект не пустой и довольно большой, зачем тратить ресурсы на его преобразование в массив или сериализацию …

Это очень простое решение, которое я использую в JavaScript. В отличие от упомянутого решения, которое приводит объект к массиву и проверяет, является ли он пустым или кодирует его в JSON, эта простая функция очень эффективна в отношении используемых ресурсов для выполнения простой задачи.

С помощью empty() не будет работать как обычно при использовании его на объекте, потому что __isset() Вместо этого будет вызван метод перегрузки, если он объявлен.

Поэтому вы можете использовать count() (если объект Счетный ).

Или с помощью get_object_vars() например,

нет уникального безопасного способа проверить, является ли объект пустым

php count () сначала приводит к массиву, но приведение может привести к созданию пустого массива, в зависимости от того, как реализован объект (эти проблемы часто затрагивают объекты расширений)

Если вы приведете что-либо в PHP как (bool), он сразу скажет вам, является ли объект объектом, примитивным типом или нулем. Используйте следующий код:

Источник

Как определить пустой объект в PHP

С Новым массивом я делаю это:

есть ли аналогичный синтаксис для объекта

16 ответов

stdClass является объектом PHP по умолчанию. stdClass не имеет свойств, методов или родитель. Он не поддерживает магию методы и не реализует интерфейсов.

при приведении скаляра или массива как Объект, вы получаете экземпляр stdClass. Вы можете использовать stdClass всякий раз, когда вам нужен универсальный объект пример.

стандартный способ создания «пустого» объекта:

но, с PHP >= 5.4, I лично предпочитаете использовать:

это короче, и я лично считаю это более ясным, потому что stdClass может вводить в заблуждение начинающих программистов (т. е. «Эй, я хочу объект, а не класс!». ).

см. руководство по PHP (здесь):

stdClass: создано путем типизации объекта.

если объект преобразуется в объект, не изменяется. Если значение любого другого типа преобразуется в объект, новый экземпляр stdClass встроенный класс создан.

объекты без свойств больше не считаются пустыми.

относительно вашего примера, если вы пишете:

PHP создает следующее предупреждение, неявно создавая свойство key1 (сам объект)

предупреждение: создание объекта по умолчанию из пустого значения

это может быть проблемой, если ваш конфигурация (см. уровень отчетов об ошибках) показывает это предупреждение в браузере. Это еще одна целая тема, но быстрый и грязный подход может использовать оператор контроля ошибок (@) игнорировать предупреждение:

Я хочу отметить, что в PHP нет такой вещи, как пустой объект в смысле:

С другой стороны, пустой массив означает пустой в обоих случаях

цитата из функции changelog пустой

объекты без свойств больше не считаются пустыми.

php.net сказал это лучше всего:

мне нравится, как легко создавать объекты анонимного типа в JavaScript:

поэтому я всегда стараюсь писать такие объекты в PHP как javascript делает:

но поскольку это в основном массив, вы не можете делать такие вещи, как назначение анонимных функций свойству, как js:

Ну, вы можете это сделать, но IMO не практично / чисто:

кроме того, с помощью этого synthax вы можете найти некоторые забавные сюрпризы, но работает отлично в большинстве случаев.

В дополнение к ответу zombat, если вы продолжаете забывать stdClass

Теперь вы можете сделать:

доступ к данным в stdClass аналогичным образом вы с массивом asociative просто использовать синтаксис <$переменная>.

можно использовать new stdClass() (рекомендуется):

или вы можете преобразовать пустой массив в объект, который создает новый пустой экземпляр встроенного класса stdClass:

или вы можете преобразовать null значение для объекта, который создает новый пустой экземпляр встроенного класса stdClass:

вы также можете попробовать этот способ.

как указывали другие, вы можете использовать stdClass. Однако я думаю, что это чище без (), например:

судя по вопросу, похоже, что вы действительно хотите, чтобы иметь возможность добавлять свойства к объекту на лету. Вам не нужно использовать stdClass для этого, хотя вы можете. Действительно, Вы можете использовать любой класс. Просто создайте экземпляр объекта любого класса и начните задавать свойства. Мне нравится создавать свой собственный класс, имя которого просто o с некоторыми базовыми расширенная функциональность, которую я люблю использовать в этих случаях и хороша для расширения из других классов. В основном это мой собственный базовый класс объектов. Мне также нравится иметь функцию с простым именем o (). Вот так:

Это отличный старт для базового «языка» для создания других языковых слоев, причем верхний слой написан в полном внутреннем DSL. Это похоже на стиль разработки lisp, и PHP поддерживает его лучше, чем большинство людей понимают. Я понимаю, что это немного касательная к вопросу, но вопрос касается того, что я думаю, является основой для полного использования мощности PHP.

Если вы хотите создать объект (например, в javascript) с динамическими свойствами, не получая предупреждения о неопределенном свойстве.

мы можем просто создать пустой объект, используя этот метод:

Я знаю, это старый вопрос, но кажется, что некоторые люди забывают о конструкторах.

Если вы не хотите этого делать:

вы можете использовать один из следующих:

PHP >=5.4

используйте универсальный объект и сопоставьте ему пары значений ключей.

Источник

How to check that an object is empty in PHP?

How to find if an object is empty or not in PHP.

12 Answers 12

You can cast to an array and then check if it is empty or not

Edit: I didn’t realize they wanted to specifically check if a SimpleXMLElement object is empty. I left the old answer below

Updated Answer (SimpleXMLElement):

If by empty you mean has no properties:

If SimpleXMLElement is one level deep, and by empty you actually mean that it only has properties PHP considers falsey (or no properties):

If SimpleXMLElement is more than one level deep, you can start by converting it to a pure array:

Old Answer (simple object):

If you want to check if a simple object (type stdClass ) is completely empty (no keys/values), you can do the following:

Edit: added example

You can cast your object into an array, and test its count like so:

проверка на пустой объект php. Смотреть фото проверка на пустой объект php. Смотреть картинку проверка на пустой объект php. Картинка про проверка на пустой объект php. Фото проверка на пустой объект php

Imagine if the object is not empty and in a way quite big, why would you waste the resources to cast it to array or serialize it.

This is a very easy solution I use in JavaScript. Unlike the mentioned solution that casts an object to array and check if it is empty, or to encode it into JSON, this simple function is very efficient concerning used resources to perform a simple task.

Using empty() won’t work as usual when using it on an object, because the __isset() overloading method will be called instead, if declared.

Therefore you can use count() (if the object is Countable).

Another possible solution which doesn’t need casting to array :

there’s no unique safe way to check if an object is empty

php’s count() first casts to array, but casting can produce an empty array, depends by how the object is implemented (extensions’ objects are often affected by those issues)

If you cast anything in PHP as a (bool), it will tell you right away if the item is an object, primitive type or null. Use the following code:

in PHP version 8

consider you want to access a property of an object, but you are not sure that the object itself is null or not and it could cause error. in this case you can use Nullsafe operator that introduced in php 8 as follow:

проверка на пустой объект php. Смотреть фото проверка на пустой объект php. Смотреть картинку проверка на пустой объект php. Картинка про проверка на пустой объект php. Фото проверка на пустой объект php

If an object is «empty» or not is a matter of definition, and because it depends on the nature of the object the class represents, it is for the class to define.

PHP itself regards every instance of a class as not empty.

In short, you will have to come up with your own criteria for a specific object, and test them accordingly, either from outside the object or from a self-written isEmpty() method in the object.

Источник

Как проверить, что объект пуст в PHP?

Как найти, является ли объект пустым или нет в PHP.

Вы можете использовать массив, а затем проверить, является ли он пустым или нет.

Изменить: однострочное типизирование, как показано ниже, не работает в PHP 5.4:

Изменить : я не понимал, что они хотят конкретно проверить, не является ли объект SimpleXMLElement пустым. Я оставил старый ответ ниже

Обновленный ответ (SimpleXMLElement) :

Если по пустому вы имеете в виду не имеет свойств:

Если SimpleXMLElement имеет один уровень глубины и пустым, вы на самом деле означаете, что он имеет только свойства, которые PHP считает ложными (или без свойств):

Если SimpleXMLElement имеет более одного уровня, вы можете начать с преобразования его в чистый массив:

Старый ответ (простой объект) :

Если вы хотите проверить, является ли простой объект (тип stdClass ) полностью пустым (нет ключей / значений), вы можете сделать следующее:

Изменить : добавлен пример

Еще одно возможное решение, которое не требует литья в array :

Вы можете передать свой объект в массив и проверить его так:

Поэтому вы можете использовать count() (если объект является Countable ).

Это очень простое решение, которое я использую в JavaScript. В отличие от упомянутого решения, которое бросает объект в массив и проверяет, является ли оно пустым, или для его кодирования в JSON, эта простая функция очень эффективна в отношении используемых ресурсов для выполнения простой задачи.

Решение работает очень просто: он вообще не будет вводить петлю foreach, если объект пуст, и он вернет true. Если он не пуст, он войдет в цикл foreach и сразу вернет false, а не через весь набор.

Уже есть правильный ответ, но я отправляю его снова. Я понимаю, что PHP – это грязный язык, но cmon guys … Представьте себе, если объект не пуст и в каком-то смысле довольно большой, зачем вам тратить ресурсы, чтобы отбросить его на массив или сериализовать его …

нет единственного безопасного способа проверить, нет ли объекта

php count () сначала приводит к массиву, но литье может создавать пустой массив, зависит от того, как реализуется объект (объекты объектов расширения часто затрагиваются этими проблемами)

Если вы нарисуете что-нибудь в PHP как (bool), он сразу скажет вам, является ли объект объектом, примитивным типом или нулем. Используйте следующий код:

Если объект «пуст» или нет, это вопрос определения, и поскольку он зависит от характера объекта, который представляет класс, он должен определить класс.

Сам PHP рассматривает каждый экземпляр класса как не пустой.

Короче говоря, вам придется придумать свои собственные критерии для конкретного объекта и проверить их соответственно, либо вне объекта, либо из самописного метода isEmpty() в объекте.

Я использовал json_decode строки в почтовом запросе. Ни один из вышеперечисленных не работал для меня, в конце я использовал это:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *