Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔验证器';在';输入中的数字问题_Php_Regex_Laravel_Preg Match - Fatal编程技术网

Php 拉威尔验证器';在';输入中的数字问题

Php 拉威尔验证器';在';输入中的数字问题,php,regex,laravel,preg-match,Php,Regex,Laravel,Preg Match,我需要帮助解决一个问题,我正在使用laravel“in”验证器将给定输入与多个逗号分隔的值字符串进行匹配。现在的问题是,如果输入中有一个数字,但它与任何逗号分隔的值都不匹配,则会出现异常: preg_match() expects parameter 2 to be string, array given 不过,它应该只在验证程序对象中给出输入字段不匹配的错误消息。相反,它给出了上述例外情况。以下是我的代码: if (!empty($program)) { $inst

我需要帮助解决一个问题,我正在使用laravel“in”验证器将给定输入与多个逗号分隔的值字符串进行匹配。现在的问题是,如果输入中有一个数字,但它与任何逗号分隔的值都不匹配,则会出现异常:

preg_match() expects parameter 2 to be string, array given
不过,它应该只在验证程序对象中给出输入字段不匹配的错误消息。相反,它给出了上述例外情况。以下是我的代码:

 if (!empty($program)) {
            $institution_id = $program->InstitutionId;
            $roster_users = $program->usersRosters()->where('ProfileType', 'Student')->get();
            if (!empty($roster_users)) {
                $rostered_users_ids = implode(',', $roster_users->lists('id'));
            }
            if (!empty($roster_users)) {
                $rostered_users_usernames = implode(',', $roster_users->lists('UserName'));
            }
            $teacher_roster_users = $program->usersRosters()->where('ProfileType', 'External Staff')->get();
            if (!empty($teacher_roster_users)) {
                $teacher_rostered_users_usernames = implode(',', $teacher_roster_users->lists('UserName'));
            }
            if (!empty($teacher_roster_users)) {
                $teacher_rostered_users_data = $teacher_roster_users->lists('id', 'UserName');
            }
        }
        $rules = [
            'aasectionname.required' => '501 – AA section does not exist',
            'aaid' => 'numeric|exists:users,id|in:' . $rostered_users_ids . '|aaidinstitutionmismatch:' . $institution_id,
            'institutionid' => 'numeric|in:' . $institution_id,
            'username' => 'exists:users,UserName|in:' . $rostered_users_usernames . '|usernameinstitutionmismatch:' . $institution_id,
            'schoolid' => 'numeric',
            'groupowner' => 'in:'.$teacher_rostered_users_usernames,
            'remove' => 'in:0,1'
        ];
        $messages = [
            // InstitutionId
            'institutionid.numeric' => '101 – Invalid Institution ID',
            'institutionid.in' => '102 – Institution ID does not match Program',
            // Usernames
            'username.exists' => '201 – UserName does not exist',
            'username.in' => '202 – UserName is not rostered to this program',
            'username.usernameinstitutionmismatch' => '203 – User/Institution Mismatch - UserName is not assigned to this Institution',
            // AAId
            'aaid.numeric' => '301 – AA ID does not exist',
            'aaid.exists' => '301 – AA ID does not exist',
            'aaid.in' => '302 – AA ID is not rostered to this program',
            'aaid.aaidinstitutionmismatch' => '303 – AA ID/Institution Mismatch – AAID is not assigned to this Institution',
            // Mismatch
            'bothmismatch' => '401 – AAID/UserName/SchoolID do not match (This is a combination of at least 2 of these items)',
            // Teacher
            'groupowner.in' => '501 – GroupOwner does not exist',
            // Remove
            'remove' => '601 – No Student record match to remove',
        ];

 Excel::load($file, function($excel) use($program, $rules, $messages, $errors, &$errors_data, $teacher_rostered_users_data) {
            global $totalmismatch;
            $results = $excel->get();
            $program_group_model = new ProgramGroup;
            $option_model = new Option;
            $group_default_status_id = key($option_model->getProgramsStatus(['Active']));
            $groupVisibilityStatusId = $group_type = $option_model->getVisibilityOptions('Question Visibility','Private');
            $data = [];
            $lastSecId = null;
            $groupSectionPreviousName = null;
            $groupname = null;
            $data['status'] = $group_default_status_id;
            $data['program_id'] = $program->Id;
            $groupname_lists = $program_group_model->with(['programs' => function ($query) use ($program){
                $query->where('ProgramId','=',$program->Id);
            }])->get()->lists('Name','Id');

            foreach ($results as $key => $row) {
                $inputs = $row->toArray();
                $groupname = trim($inputs['usergroup']);
                $errors = [];
                // Stop reading the excel when aasectionname is empty
                if (empty($groupname) || $groupname == null) {
                    $errors['remove'] = $messages['aasectionname.required'];
                }
                $validator = Validator::make($inputs, $rules, $messages);
                if ($validator->fails()) {
                    $errors = $validator->messages()->toArray();
                    foreach ($errors as $error) {
                        foreach ($error as $e) {
                            $errors_data[] = [$key + 2, $e];
                        }
                    }
                } else {
                    $aaid = intval($inputs['aaid']);
                    $groupowner_name = $inputs['groupowner'];
                    if (!empty($teacher_rostered_users_data[$groupowner_name])) {
                        $groupowner_id = $teacher_rostered_users_data[$groupowner_name];
                        $data['owner'] = $groupowner_id;
                    }
                    $remove = intval($inputs['remove']);
                    // Remove existing Student Roster
                    if (!empty($remove)) {
                        $removed = false;
                        $user_ids = is_array($aaid) ? $aaid : [$aaid];
                        $program_group = $program->programGroups()->where('Name', $groupname);
                        if (!empty($program_group)) {
                            $program_group = $program_group->first();
                        }
                        if (!empty($program_group)) {
                            $program_group = $program_group->users();
                        }
                        if (!empty($program_group) && !empty($user_ids)) {
                            $removed = $program_group->detach($user_ids);
                        }
                        if (!$removed) {
                            $errors['remove'] = $messages['remove'];
                        }
                    } else {
                        if (!in_array($groupname, $groupname_lists) || $groupSectionPreviousName != $groupname)  {
                            $data['name'] = $groupname;
                            $data['group_id'] = array_search($groupname, $groupname_lists);
                            $data['group_type'] = $groupVisibilityStatusId;
                            $sectionId = $program_group_model->saveProgramGroup($data);
                            $data[$sectionId]['selected'][] = $aaid;
                            $groupname_lists[$sectionId] = $groupname;
                        } else {
                            $temp = array_flip($groupname_lists);
                            $data[$temp[$groupname]]['selected'][] = $aaid;
                        }
                    }
                    if ($totalmismatch === 2) {
                        $errors['bothmismatch'] = $messages['bothmismatch'];
                    }
                    foreach ($errors as $error) {
                        $errors_data[] = [$key + 2, $error];
                    }
                }
                $groupSectionPreviousName = $groupname;
            }
            $programAASectionModelForSectionUsers = new ProgramSectionUser();
            $programAASectionModelForSectionUsers->saveProgramGroupUsers($data);
        });
美元规则

array:7 [
  "aasectionname.required" => "501 – AA section does not exist"
  "aaid" => "numeric|exists:users,id|in:28,29,32,33,25,24,27|aaidinstitutionmismatch:42"
  "institutionid" => "numeric|in:42"
  "username" => "exists:users,UserName|in:Kabeer,Ayaz,fddesaaweqq,fdawerascvdfc,haseeb,kamran,shahid|usernameinstitutionmismatch:42"
  "schoolid" => "numeric"
  "groupowner" => "in:externalstaff,rahat,uzma,sahar,haseebahmad,saimariaz,fredrick"
  "remove" => "in:0,1"
]

我想你希望
$teacher\u rostered\u users\u data
是数组,对吗?因为您使用了
lists()
.Do“dd($rules);”并粘贴results@jedrzej.kurylo请检查dd($规则)我已经更新了question@aldrin27不,我需要$teacher\u rostered\u users\u数据是由逗号分隔的值字符串,因为laravel validator“in”需要字符串而不是array@RazaChohan因为如果它是数组,那么他将使用
内爆()
并将其插入
$rules
我想您希望
$teacher\u rostered\u users\u data
中,对吗?因为您使用了
lists()
.Do“dd($rules);”并粘贴results@jedrzej.kurylo请检查dd($规则)我已经更新了question@aldrin27不,我需要$teacher\u rostered\u users\u数据是由逗号分隔的值字符串,因为laravel validator“in”需要字符串而不是array@RazaChohan因为如果它是数组,那么他将使用
内爆()
并将其插入
$rules