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;
}