如何仅在使用另一个字段时才需要创建一个字段

时间:2012-03-29 15:29:01

标签: php

我有一个表单,用户可以在其中输入同事的姓名和电子邮件地址。他们不需要输入任何东西。但是,如果输入了名称,则需要电子邮件地址。

 <form>
      1st name  <input type="text" name="name_1" value"" />
      1st email <input type="text" name="email_1" value"" />
      2nd name  <input type="text" name="name_2" value""/>
      2nd email  <input type="text" name="email_2" value""/> 
  </form>

我已经可以使用下面的功能制作某些字段了。我想我可以使用if else语句检查第一个名称是否有值,然后需要第一个电子邮件。但是,该表格有20个潜在的名称/电子邮件对。

我所追求的是关于我应该尝试做的事情的建议,而不是一个完整的解决方案。我对这个有点模糊的问题进行了批评,但我对PHP很新,并且很难找到解决方案。

function check_required_fields($required_array) {
    $field_errors = array();
    foreach($required_array as $fieldname) {
            if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && !is_numeric($_POST[$fieldname]))) { 
                    $field_errors[] = $fieldname; 
            }
    }
    return $field_errors;
}

1 个答案:

答案 0 :(得分:0)

只要您与name_1等字段命名一致,就可以在_之后使用子字符串操作从数组键中提取数字,并在email_中查找可比较的值

foreach ($_POST as $key => $value) {
  // If it is a name field and isn't empty
  if (strpos($key, 'name_') === 0 && !empty($_POST[$key])) {
    // The email field is email_ and the number (which comes after the 5th character in name_num)
    $namenumber = substr($key, 5);
    $emailfield = 'email_' . $namenumber;
    // Append the email requirement onto $field_errors if it's empty in $_POST
    if (empty($_POST[$emailfield])) {
       $field_errors[] = $emailfield;
    }
  }
}