寻找下面的最佳方法。如果我的用户对象中的ANYTHING为空,我想返回TRUE,我不关心哪一个是空的。我想我之前在搜索数组中的空值时已经完成了这个,但是无法想到用对象执行此操作的最佳方法。
我知道我可以通过对象循环并在对象中找到一个空值时断开,但首先检查是否有更好的方法来执行此操作,谢谢!
function is_it_empty($user)
{
$is_it_empty = FALSE;
if( isset($user->first_name) )
$is_it_empty = TRUE;
if( isset($user->last_name) )
$is_it_empty = TRUE;
return $is_it_empty;
}
也:
function name($user)
{
foreach($user as $u):
if( isset ($user->value) ): // or should it be isset?
return true;
break;
endif;
endforeach;
return true;
}
答案 0 :(得分:1)
$user = new stdClass();
$user->firstName = 'Mark';
$user->lastName = 'Baker';
$user->sanity = NULL;
function is_it_empty($user) {
foreach($user as $property) {
if (empty($property)) {
return true;
}
}
return false;
}
var_dump(is_it_empty($user));
答案 1 :(得分:0)
function is_it_empty($user)
{
foreach($user as $key=>$value)
{
if( empty($value) ){
return = TRUE;
}
}
}
答案 2 :(得分:0)
如果任何人碰巧关心封装,这个代码可能会出现。第一个函数仅检查公共属性。
function is_prop_empty( $object ) {
$reflect = new ReflectionClass($object);
$props = $reflect->getProperties();
foreach ($props as $prop) {
try {
$result = $prop->getvalue( $object );
if( $result === null ) {
return true;
}
} catch( Exception $e ) {
}
}
return false;
}
var_dump( is_prop_empty($user) );
使用第二个,您可以查看私有和受保护的属性:
function is_prop_empty( $object ) {
$reflect = new ReflectionClass($object);
$props = $reflect->getProperties();
foreach ($props as $prop) {
$prop->setAccessible(true);
$result = $prop->getvalue( $object );
if( $result === null ) {
return true;
}
}
return false;
}
通过清空,我认为你的意思是null
但你可以修改上面的功能以满足你的“空”要求。
答案 3 :(得分:0)
我认为使用这个通用函数检查一个值是否存在就可以完成工作
function is_empty($data) {
if(empty($data) || !isset($data) || $data == false) {
return true;
}
return false;
}