【问题标题】:PhP associative error array based on dynamic key=>values基于动态键=>值的PhP关联错误数组
【发布时间】:2013-01-28 20:19:10
【问题描述】:

这是我开始编写的一个类,用于通过注册表单将新用户添加到我的数据库中。在我尝试进行后端检查以查看是否未提供所需值之前,一切都运行良好。这是代码...

class User
{
//Basic Login variables
private $uName;
private $pWord;
private $cpWord;
private $shaPass;

//Account info vars
private $fName;
private $lName;
private $email;
private $confEmail;
private $mPhone;
private $hPhone;

//Trading info vars
private $trName;
private $phone; //Defaults to home phone, or cell, if no home number specified.
private $fax;
private $web;

//Home Address vars
private $h_addr1;
private $h_addr2;
private $h_city;
private $h_state;
private $h_zip;

//Postal Address vars
private $p_addr1;
private $p_addr2;
private $p_city;
private $p_state;
private $p_zip;

private $not_required_vars;
//Post name collection
private $post_coll;
//Error collection
private $errors;

public function User()
{       
    $this->not_required_vars = array('fax', 'web');
    $this->post_coll = array('uName', 'pWord', 'cpWord', 'fName', 'lName', 'email', 'confEmail', 'dob', 'mPhone', 'hPhone', 'trName', 'phone', 'fax', 'web', 'h_addr1', 'h_addr2', 'h_city', 'h_state', 'h_zip', 'p_addr1', 'p_addr2', 'p_city', 'p_state', 'p_zip');
    //print_r($_POST);

    foreach($this->post_coll as $index)
    {
        if(isset($_POST[$index]) && (!empty($_POST[$index])))
        {
            //echo $index . '<br />';
            $this->{$index} = $_POST[$index];
        }else
        {
            foreach($this->not_required_vars as $not_req)
            {
                if($index != $not_req)
                {
                    //echo $index . '<br />';
                    $this->errors = array();

                    $this->errors[] = array($index=>'This field is required');
                    break;
                    //header('location: '.$_SERVER['PHP_SELF'].'?page='. $_GET['page'] . '&error=1');
                }
            }
        }

    }
    print_r($this->errors);
}

让我尝试通过解释上述内容来节省您的时间...我有一个名为“post_coll”的 $_POST 索引字符串数组。然后我让我的 foreach 循环遍历每个字符串,检查 $_POST 数组中是否设置了该字符串,如果不是,我检查它是否是必需的值。如果它确实是必需的值,我想创建一个关联数组,其中字符串(例如'uName')作为数组中的键,当我将它重定向回时,值类似于“此字段是必需的”我的表单我可以从我的班级获取错误并将它们显示在表单上的适当位置。

提前感谢您的帮助。

【问题讨论】:

    标签: php arrays dynamic associative


    【解决方案1】:
    $this->errors[] = array($index=>'This field is required');
    

    这一行看起来像它的创建和数组数组

    这不是你要找的东西吗?

    $this->errors[$index] = 'This field is required';
    

    【讨论】:

    • 好吧...是的,我曾经有过这个,但是当那个时候我把它打印出来...Array ( [cpWord] =&gt; This field is required ) 这就是我想要的,但是... cpWord 不是唯一未填写的值,我也未填写 uName 和 pWord。就像它正在做它应该做的事情,但是替换数组中的值而不是附加错误。编辑:我试图使用类似 array_push 的东西,但这也不起作用,或者至少我这样做的方式没有。
    • 如何将数组中的值打印到屏幕上?
    • User 类会将用户重定向回表单,并且在每个元素上方我将有一个 div 标签,其条件是 $errors['uName'] 等...(从getErrors 函数)已设置,在元素上方显示它的消息。
    • 这是我如何显示错误的示例...&lt;label&gt;Password:&lt;/label&gt;&lt;br /&gt; &lt;div class="errMsg"&gt; getErrors(); echo ''.$errors['cpWord'].''; ?> &lt;/div&gt; &lt;label&gt;Repeat Password:&lt;/label&gt;&lt;br /&gt;
    • 我可以在页面上建议 print_r($theArrayInQuestion) ,只是为了仔细检查数组是否设置正确。很可能是数组很好,其他地方有错误
    猜你喜欢
    • 1970-01-01
    • 2014-07-19
    • 2017-11-15
    • 2019-11-30
    • 2014-09-19
    • 2020-08-03
    • 2021-10-08
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多