How can PHP beginners streamline their code for form validation to avoid lengthy if statements?

PHP beginners can streamline their code for form validation by using arrays to store validation rules and error messages. This way, they can loop through the rules and check each field against its corresponding validation rule. This approach helps avoid lengthy if statements and makes the code more organized and easier to maintain.

// Define validation rules and error messages
$validation_rules = [
    'username' => 'required|min:3|max:20',
    'email' => 'required|email',
    'password' => 'required|min:6'
];

$error_messages = [
    'username' => [
        'required' => 'Username is required.',
        'min' => 'Username must be at least 3 characters.',
        'max' => 'Username cannot exceed 20 characters.'
    ],
    'email' => [
        'required' => 'Email is required.',
        'email' => 'Invalid email format.'
    ],
    'password' => [
        'required' => 'Password is required.',
        'min' => 'Password must be at least 6 characters.'
    ]
];

// Validate form data
$errors = [];
foreach ($validation_rules as $field => $rules) {
    $rules = explode('|', $rules);
    foreach ($rules as $rule) {
        if ($rule === 'required' && empty($_POST[$field])) {
            $errors[$field] = $error_messages[$field][$rule];
        } elseif ($rule === 'email' && !filter_var($_POST[$field], FILTER_VALIDATE_EMAIL)) {
            $errors[$field] = $error_messages[$field][$rule];
        } elseif (strpos($rule, 'min:') === 0) {
            $min_length = explode(':', $rule)[1];
            if (strlen($_POST[$field]) < $min_length) {
                $errors[$field] = $error_messages[$field]['min'];
            }
        } elseif (strpos($rule, 'max:') === 0) {
            $max_length = explode(':', $rule)[1];
            if (strlen($_POST[$field]) > $max_length) {
                $errors[$field] = $error_messages[$field]['max'];
            }
        }
    }
}

// Display errors or process form submission
if (!empty($errors)) {
    foreach ($errors as $error) {
        echo $error . '<br>';
    }
} else {
    // Process form submission
}