Helper::convertNHS2MySQL PHP Method

convertNHS2MySQL() public static method

Strings that do not match the NHS format are returned unchanged or are not valid dates.
public static convertNHS2MySQL ( string | array $data, array $fields = null ) : string | array
$data string | array Data containing one or more NHS dates
$fields array Fields (keys) to convert (optional, if empty then all fields are checked for dates)
return string | array
    public static function convertNHS2MySQL($data, $fields = null)
    {
        if ($is_string = !is_array($data)) {
            $data = array('dummy' => $data);
        }
        $list = $fields ? $fields : array_keys($data);
        foreach ($list as $key) {
            if (isset($data[$key])) {
                // traverse down arrays to convert nested structures
                if (is_array($data[$key])) {
                    $data[$key] = self::convertNHS2MySQL($data[$key], $fields);
                } elseif (is_string($data[$key]) && preg_match(self::NHS_DATE_REGEX, $data[$key])) {
                    $check_date = date_parse_from_format('j M Y', $data[$key]);
                    if (checkdate($check_date['month'], $check_date['day'], $check_date['year'])) {
                        $data[$key] = date('Y-m-d', strtotime($data[$key]));
                    }
                }
            }
        }
        if ($is_string) {
            return $data['dummy'];
        } else {
            return $data;
        }
    }

Usage Example

Example #1
0
 /**
  * Convert NHS dates to MySQL format.
  * Strings that do not match the NHS format are returned unchanged or are not valid dates.
  *
  * @param string|array $data Data containing one or more NHS dates
  * @param array $fields Fields (keys) to convert (optional, if empty then all fields are checked for dates)
  * @return string|array
  */
 public static function convertNHS2MySQL($data, $fields = null)
 {
     if ($is_string = !is_array($data)) {
         $data = array('dummy' => $data);
     }
     $list = $fields ? $fields : array_keys($data);
     foreach ($list as $key) {
         if (isset($data[$key])) {
             // traverse down arrays to convert nested structures
             if (is_array($data[$key])) {
                 $data[$key] = Helper::convertNHS2MySQL($data[$key], $fields);
             } elseif (is_string($data[$key]) && preg_match(self::NHS_DATE_REGEX, $data[$key])) {
                 $check_date = date_parse_from_format('j M Y', $data[$key]);
                 if (checkdate($check_date['month'], $check_date['day'], $check_date['year'])) {
                     $data[$key] = date('Y-m-d', strtotime($data[$key]));
                 }
             }
         }
     }
     if ($is_string) {
         return $data['dummy'];
     } else {
         return $data;
     }
 }
All Usage Examples Of Helper::convertNHS2MySQL