laravel 中的空输入 "implode(): Invalid arguments passed"

On null input "implode(): Invalid arguments passed" in laravel

我正在使用 laravel 5.5 我有一个 multi-select 下拉列表。如果我没有 select 任何值,它就会产生错误。 "implode(): Invalid arguments passed"

<select  multiple="multiple" name="language[]">
@foreach($language_data as $language)
   <option value="{{$language->language_id}}">{{$language->language_name}}</option>
@endforeach
</select>

控制器

  $language = $request->input('language');
  $language = implode(',', $language);
 DB::table('language')->insert(['language' => $language,]);

只需使用一个简单的 if:

if($request->input('language') !== ''){
  $language = $request->input('language');
  $language = implode(',', $language);
 DB::table('language')->insert(['language' => $language,]);
}

如果需要在后端定义语言,如果像下面这样选择 none,您可以回退

$request->input('language') !== '' ? $language = $request->input('language') : $language = 'en_GB';

$language = implode(',', $language);
DB::table('language')->insert(['language' => $language,]);

试试这个,应该可以解决问题

$language = ''; //set default language here
if($request->input('language')) {
   $language = $request->input('language');
   $language = implode(',', $language);
}
DB::table('language')->insert(['language' => $language,]);

在内爆之前进行检查。

  $language = $request->input('language');
  if (!empty($language)) {
     $language = implode(',', $language);
  } else {
     $language = '';
  }
  DB::table('language')->insert(['language' => $language]);
$language = optional(collect($request->input('language')))->implode(',');

DB::table('language')->insert(['language' => $language]);

从 $request 值创建一个集合,在事件中包装可选 'language' 不是必需的属性,内爆结果。