检测包含 php 或 laravel 中所有空字符串 属性 值的对象
Detecting an object containing all empty string property values in php or laravel
我需要检测一个对象(如下图所示)的所有属性是否都有一个空字符串作为值。我怎样才能做到这一点?
object(stdClass)#1282 (9) {
["first_name"]=>
string(0) ""
["last_name"]=>
string(0) ""
["company"]=>
string(0) ""
["address_1"]=>
string(0) ""
["address_2"]=>
string(0) ""
["city"]=>
string(0) ""
["state"]=>
string(0) ""
["postcode"]=>
string(0) ""
["country"]=>
string(0) ""
}
如果所有属性都是空字符串,这应该 return true
。
return collect((array)$obj)->every(function ($value, $key) {
return trim($value) === '';
});
如果您使用的是 PHP 7.4 及更高版本,这可能会更短。
return collect((array) $obj)->every(fn ($v) => '' === trim($v));
因为都是空字符串/null
这些字段可以很容易地过滤掉:
(bool) array_filter((array) $object)
如果它有一个 属性 不是“虚假”值,您将得到 true
.
仅供参考: 这也会过滤掉其他错误值,例如 0
、'0'
、false
等...
PHP.net Manual - Function Reference array_filter
我需要检测一个对象(如下图所示)的所有属性是否都有一个空字符串作为值。我怎样才能做到这一点?
object(stdClass)#1282 (9) {
["first_name"]=>
string(0) ""
["last_name"]=>
string(0) ""
["company"]=>
string(0) ""
["address_1"]=>
string(0) ""
["address_2"]=>
string(0) ""
["city"]=>
string(0) ""
["state"]=>
string(0) ""
["postcode"]=>
string(0) ""
["country"]=>
string(0) ""
}
如果所有属性都是空字符串,这应该 return true
。
return collect((array)$obj)->every(function ($value, $key) {
return trim($value) === '';
});
如果您使用的是 PHP 7.4 及更高版本,这可能会更短。
return collect((array) $obj)->every(fn ($v) => '' === trim($v));
因为都是空字符串/null
这些字段可以很容易地过滤掉:
(bool) array_filter((array) $object)
如果它有一个 属性 不是“虚假”值,您将得到 true
.
仅供参考: 这也会过滤掉其他错误值,例如 0
、'0'
、false
等...
PHP.net Manual - Function Reference array_filter