【问题标题】:Save into array with for loop laravel使用 for 循环 laravel 保存到数组中
【发布时间】:2017-07-04 06:04:43
【问题描述】:

我有一种方法来处理来自动态表单的请求。

public function step2(Request $request)
{
    $this->validate($request, [
      'title.*' => 'required',
      'f_name.*'   =>'required',
      'l_name.*'   =>'required',
      'dob_month.*'   =>'required',
      'dob_day.*'   =>'required',
      'dob_year.*'   =>'required',
      'gender.*'   =>'required',
      'email.*'   =>'required',
      'contact.*'   =>'required',
      'address1.*'   =>'required',
      'address2.*'   =>'required',
      'town.*'   =>'required',
      'state.*'   =>'required',
      'mailbox.*'   =>'required',
      'insurance.*'   =>'required',
    ]);   

$data = array(
    for ($i=0; $i <$request->limit ; $i++){
        "title$i" => $request->title[$i],
        "f_name$i" => $request->f_name[$i],
        if (!isEmpty($request->m_name)) {
            "m_name$i" => $request->m_name[$i],
        }            
        "l_name$i" => $request->l_name[$i],
        "dob_month$i" => $request->dob_month[$i],
        "dob_day$i" => $request->dob_day[$i],
        "dob_year$i" => $request->dob_year[$i],
        "gender$i" => $request->gender[$i],
        "email$i" => $request->email[$i],
        "contact$i" => $request->contact[$i],
        "address1$i" => $request->address1[$i],            
        if (!isEmpty($request->m_name)) {
            "address2$i" => $request->address2[$i],
        }  
        "town$i" => $request->town[$i],
        "mailbox$i" => $request->mailbox[$i],
        "insurance$i" => $request->insurance[$i],
    }

    Mail::send('emails.contact', $data, function($message) use ($data){
    $message->from(''sender@demo.com);
    $message->to('receiver@demo.com');
    $message->subject("!!New Mail!!");
      });

    );
  return view('success');
}

我正在尝试使用 for 循环将所有传入请求保存在数组中,以便将其作为电子邮件发送。但是我遇到了错误 Parse error: syntax error, unexpected 'for' (T_FOR), expecting ')'。解决这个问题的最佳方法是什么。

【问题讨论】:

  • 您不能在数组中运行 for 循环。这就是它给出错误的原因。尝试在数组外使用 for 循环来用数据填充数组@tanja-forsberg
  • 你应该在数组外循环,并在for循环内追加到数组
  • 请检查线路-> $message->from(''sender@demo.com);
  • @NithinJohn 这只是一个拼写错误。
  • @ParthGoswami 解决这个问题的最佳方法是什么?

标签: php laravel laravel-5.4


【解决方案1】:

您可以使用$key => $value 对来创建这样的数组:

$data = array();

foreach($request->title as $key=>$value){

    $insert = array();

    $insert['title'.$key] = $value;
    $insert['f_name'.$key] = $request->f_name[$key];

    if (!isEmpty($request->m_name)) {
        $insert['m_name'.$key] = $request->m_name[$key];
    }            

    $insert['l_name'.$key] = $request->l_name[$key];
    $insert['dob_month'.$key] = $request->dob_month[$key];
    $insert['dob_day'.$key] = $request->dob_day[$key];
    $insert['dob_year'.$key] = $request->dob_year[$key];
    $insert['gender'.$key] = $request->gender[$key];
    $insert['email'.$key] = $request->email[$key];
    $insert['contact'.$key] = $request->contact[$key];
    $insert['address1'.$key] = $request->address1[$key];

    if (!isEmpty($request->m_name)) {
        $insert['address2'.$key] = $request->address2[$key];
    }  

    $insert['town'.$key] = $request->town[$key];
    $insert['mailbox'.$key] = $request->mailbox[$key];
    $insert['insurance'.$key] = $request->insurance[$key];

    array_push($data, $insert);
}

现在,将此$data 连同邮件一起发送。

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2021-09-16
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多