Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Laravel_Eloquent - Fatal编程技术网

Php 如何从输入数组中选择选定值

Php 如何从输入数组中选择选定值,php,arrays,laravel,eloquent,Php,Arrays,Laravel,Eloquent,我有7个输入字段。但是,用户最多只能选择3个主题。我如何才能将这些输入更新到我的表中 public function searchgrouppost(){ $subject1 = Input::get('subject1'); $subject2 = Input::get('subject2'); $subject3 = Input::get('subject3'); $subject4 = Input::get('sub

我有7个输入字段。但是,用户最多只能选择3个主题。我如何才能将这些输入更新到我的表中

public function searchgrouppost(){

         $subject1 = Input::get('subject1');
         $subject2 = Input::get('subject2');
         $subject3 = Input::get('subject3');
         $subject4 = Input::get('subject4');
         $subject5 = Input::get('subject5');
         $subject6 = Input::get('subject6');
         $subject7 = Input::get('subject7');
我的目标是以这样的方式结束:

DB::table('mytable')->where('id', 6)
                    ->update(['subject' => $firstchosensubject,
                           'subjecttwo' => $secondchosensubject, 
                           'subjectthree' =>$thirdchosensubject]);
到目前为止,我已经:

$subjects = [];
$inputs = Input::all();
array_walk($inputs, function ($v, $k) use (&$subjects) {
if(starts_with($k, 'subject')) {
    $subjects[$k] = $v;
}
});

$index = count($subjects);

如上所示,我在这个
$subjects
变量中有所有输入。如何为表输入提取这些值

我建议在前端验证输入,而不是尝试使用php。下面是一些JQuery,它可以帮助您完成任务

var numSubjects = 0;
$(".inputs").each(function(i, obj) {
    if($(this).val() != ""){
        numSubjects++;
    }
});

if(numSubjects > 3){
    // let the user know
}else{
    // submit the form
}

您可以随时检查val是否为空

$subjects = [];
$inputs = Input::all();
array_walk($inputs, function ($v, $k) use (&$subjects) {
if(!empty($v) && starts_with($k, 'subject')) {
    $subjects[$k] = $v;
}
});

$index = count($subjects);
到目前为止,阵列中只存储了3个val

DB::table('mytable')->where('id', 6)
                    ->update(['subject' => $subjects[0],
                           'subjecttwo' => $subjects[1], 
                           'subjectthree' =>$subjects[2]]);
视图:


检查所有非空数组以及-永远不要相信客户端验证如果您确保表单提交的地方只有三个,那么您可以简单地检查数组的长度以确保没有太多?我可以理解为什么在某些情况下,您希望保持灵活性,而您的客户端代码告诉我只能提交3个不会阻止我提交4或37个。客户端验证总是可以进行的subverted@Dagon验证3不是我的问题。它知道如何将这三个输入转换为
$firstchosensubject
$secondchosensubject
$thirdchosensubject
。验证3不是我的问题。如果(!empty($v),它知道如何通过此验证将这三个输入转换为$firstchosensubject、$secondchosensubject和$ThirdChosensubject您只筛选拾取的主题,您询问了如何从7中提取3,因此您通过有效输入进行筛选扫描您给我一个更新表代码的示例?换句话说,我将如何将这些变量输入到我的表中?我收到一条错误消息,说未定义的偏移量是:0echo print_r($subjects,true);exit()若要查看数组中的值,请执行以下操作:
<input name="subject[]" id="list" type="checkbox"  value="1">
$topic = Input::get('subject');

foreach ($topic as $key =>$value ) {

DB::table('mytable')->where('id', $id)
                ->update(['subject' => $topic[0],
                       'subjecttwo' => $topic[1]]);
}