function is_blank($value){
$type = gettype($value);
switch ($type) {
case 'NULL':
return true;
break;
case 'boolean':
if ($value === false)
return true;
break;
case 'integer':
if ($value == 0)
return true;
break;
case 'double':
if ($value == 0.0)
return true;
break;
case 'string':
if (preg_match('/^\s*0*\s*$/', $value))
return true;
break;
case 'array':
if (count($value) == 0)
{
return true;
}
else {
$all_blank = true;
foreach ($value as $item) {
if (!is_blank($item)){
$all_blank = false;
}
}
if ($all_blank){
return true;
} else {
return false;
}
}
break;
case 'object':
$implements = class_implements($value);
if (
in_array('ArrayAccess', $implements) &&
(
in_array('IteratorAggregate', $implements) ||
in_array('Iterator', $implements) ||
in_array('SeekableIterator', $implements) ||
in_array('RecursiveIterator', $implements)
) &&
in_array('Countable', $implements)
)
{
if (count($value) == 0)
{
return true;
}
else {
$all_blank = true;
foreach ($value as $item) {
if (!is_blank($item)){
$all_blank = false;
}
}
if ($all_blank){
return true;
} else {
return false;
}
}
}
break;
default:
return false;
break;
}
return false;
}