【问题标题】:How can I echo the key name itself in PHP如何在 PHP 中回显键名本身
【发布时间】:2014-10-23 18:28:06
【问题描述】:
<form name="contact" method="POST" action="">
<input type="text" name="first_name">
<input type="submit" name="submit">
</form>

我想回显first_name 字符串。即使没有设置name="first_name" 的值。

我到底想要达到什么目的? 查看变量 $name,我希望它回显 first_name。 所以,假设我在表单中添加了另一个输入,

<input type="text" name="surname">

我希望我的函数check_empty 说:“请不要将姓氏字段留空。”以及:“请不要将姓名字段留空。”

    class validator{        
    function check_empty($first_name){
        if(empty($first_name)){
            echo "Please don't leave the $first_name field empty.";
        }
    }   
}

编辑。 基本上我想做的是只使用一个函数来验证所有空字段。并向他们显示相关消息,因此如果名字字段为空,请告诉他们其为空。如果姓是空的,告诉他们它是空的。我不想使用多个函数来验证不同的空字段。

【问题讨论】:

标签: php function class


【解决方案1】:

如果您想在用户提交值之前验证这一点,您必须使用 JS 执行此操作

如果要使用 PHP 进行验证,则必须检查是否按下了提交并检查名字值:

if(isset($_POST['submit'])) {
    //check first name value
    if(isset($_POST['first_name']) && $_POST['first_name'] != '') {
       //enter code here
    } else {
       echo "Please don't leave the $_POST['first_name'] field empty.";
    }
}

或者,使用您的功能:

if(isset($_POST['submit'])) {
    check_empty($_POST['first_name']);
    //do whatever
}

类:

if(isset($_POST['submit'])) {
    $validation = new validator();
    $validation->check_empty($_POST['first_name']);
}

L.E:我将使用我提供的后一个示例。所以:

if(isset($_POST['submit'])) {
    $validation = new validator();

    //you do this for every `_POST` you have
    $values = array();
    $values['label'] = 'First Name'; 
    $values['value'] = $_POST['first_name'];

    $validation->check_empty($values); 
}

//check_empty needs a small adjustment now:
function check_empty($value){
    if(empty($value['value'])){
        echo "Please don't leave the " . $value['label'] . " field empty.";
    }
}  

希望对您有所帮助!
继续编码!
战神。

【讨论】:

  • 在您使用 check_empty 方法的示例中,它不会给 OP 提供所需的结果。
  • 好的,我稍后会修改我的答案。 Tx 为我指出了这一点!
【解决方案2】:

我假设您正在循环访问 $_POST 并调用 check_empty。在这种情况下,请执行以下操作

$objValidator = new validator();
$arrErrors = array();
foreach($_POST as $key => $value) {
    $arrErrors[] = $objValidator->check_empty($key, $value);
}
array_filter($arrErrors); //Remove FALSE values, so only actual errors are stored

if( count($arrErrors) ) { 
   echo implode("<br />", $arrErrors);
   //Show form?
} else {
   //Everything is filled in
}

然后,只需修改您的方法;

function check_empty($key, $value){
    if(empty($value)){
        return "Please don't leave the ". $key ." field empty.";
    } else {
        return FALSE;
    }
}  

【讨论】:

  • @HD 基本上我想要做的是只使用一个函数来验证所有空字段。并向他们显示相关消息,因此如果名字字段为空,请告诉他们其为空。如果姓是空的,告诉他们它是空的。我不想使用多个函数来验证不同的空字段。
  • 这是使用一种方法。我们正在遍历您的 _POST'd 数据,并使用您的 check_empty 方法检查每个数据。每个字段都通过您的一种方法。
【解决方案3】:

您可以在一行中获取空字段的名称:

$empty_fields = array_keys(array_diff_key($_POST, array_filter($_POST)));

记住 KISS - 保持简单,愚蠢。

【讨论】:

    【解决方案4】:

    好的,在你们的帮助下,这就是我所做的。它几乎给了我想要的结果。

        class validator{        
        function check_empty($post_array){
            foreach($post_array as $key=>$value){
                if(empty($value)){
                    echo $key . " field cannot be left empty" . "</br>";
                }
            }
        }
    }
    
        if(isset($_POST["submit"])){
        $Validator = new validator();
        $Validator->check_empty($_POST);
    }
    

    再次感谢:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2021-04-12
      相关资源
      最近更新 更多