我想检查对象的任何属性是否为空,而无需手动检查每个属性。我现在就是这样做的:
class MyClass {
public $a;
public $b;
public $c;
}然后:
$item = new MyClass();
// ...
$item->a = 10;
$item->b = 20;
// ...
// TODO:
$hasEmpty = empty($item->a) || empty($item->b) || empty($item->c);如果不手动检查每个属性,怎么可能呢?
发布于 2022-05-10 13:02:26
实际上,可以将对象键入数组,然后在数组上使用array_filter筛选空值并检查其大小,如下所示:
<?php
$hasEmpty = count(array_filter((array)$item,fn($v) => empty($v))) > 0;
var_dump($hasEmpty);另一种方法可以是实现ArrayAccess接口和访问对象键,就像数组键一样,并执行空检查,但如果读者愿意,我将让读者来实现它们。
发布于 2022-05-10 12:45:50
我建议销毁您的对象,然后遍历并查看其中是否为空。
// 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;
}
}或者你可以把它变成一个函数
function areAnyPropertiesEmpty($class){
$vars = get_object_vars($class);
$isNull = false;
foreach($vars as $var){
if(empty($var)){
$isNull = true;
}
}
return $isNull;
}发布于 2022-05-10 13:03:18
我想你得在物体上循环一下。
function isObjectEmpty($obj) {
foreach ($obj as $value) {
if (!isset($value)) {
return true;
}
}
return false;
}https://stackoverflow.com/questions/72186485
复制相似问题