首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查对象的任何属性是否为空?

如何检查对象的任何属性是否为空?
EN

Stack Overflow用户
提问于 2022-05-10 12:40:22
回答 4查看 163关注 0票数 0

我想检查对象的任何属性是否为空,而无需手动检查每个属性。我现在就是这样做的:

代码语言:javascript
运行
复制
class MyClass {
    public $a;
    public $b;
    public $c;
}

然后:

代码语言:javascript
运行
复制
$item = new MyClass();

// ...
$item->a = 10;
$item->b = 20;
// ...

// TODO:
$hasEmpty = empty($item->a) || empty($item->b) || empty($item->c);

如果不手动检查每个属性,怎么可能呢?

EN

回答 4

Stack Overflow用户

发布于 2022-05-10 13:02:26

实际上,可以将对象键入数组,然后在数组上使用array_filter筛选空值并检查其大小,如下所示:

代码语言:javascript
运行
复制
<?php

$hasEmpty = count(array_filter((array)$item,fn($v) => empty($v))) > 0;

var_dump($hasEmpty);

另一种方法可以是实现ArrayAccess接口和访问对象键,就像数组键一样,并执行空检查,但如果读者愿意,我将让读者来实现它们。

票数 2
EN

Stack Overflow用户

发布于 2022-05-10 12:45:50

我建议销毁您的对象,然后遍历并查看其中是否为空。

代码语言:javascript
运行
复制
// create class
class MyClass {
    public $a;
    public $b;
    public $c;
}

// create object
$item = new MyClass();
$item->a = 10;
$item->b = 20;

// get vars and test if any properties are null
$vars = get_object_vars($item);
$isNull = false;
foreach($vars as $var){
    if(empty($var)){
       $isNull = true;
    }
}

或者你可以把它变成一个函数

代码语言:javascript
运行
复制
function areAnyPropertiesEmpty($class){
     $vars = get_object_vars($class);
    $isNull = false;
    foreach($vars as $var){
       if(empty($var)){
           $isNull = true;
       }
    }
    return $isNull;
}
票数 1
EN

Stack Overflow用户

发布于 2022-05-10 13:03:18

我想你得在物体上循环一下。

代码语言:javascript
运行
复制
function isObjectEmpty($obj) {
  foreach ($obj as $value) {
    if (!isset($value)) {
      return true;
    }
  }
  return false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72186485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档