preg_match() 期望参数 2 是字符串,数组给定错误
Posted
技术标签:
【中文标题】preg_match() 期望参数 2 是字符串,数组给定错误【英文标题】:preg_match() expects parameter 2 to be string, array given Error 【发布时间】:2017-01-02 15:43:50 【问题描述】:我正在尝试插入数组,但出现错误:-
preg_match() 期望参数 2 是字符串,给定数组
我的表格如下:
!! Form::text('description[]',null,['class' => 'input-field input-sm','v-model'=>'row.description']) !!
!! Form::text('log_time[]',null,['class' => 'input-field input-sm','v-model'=>'row.log_time']) !!
我的控制器存储功能:
$this->validate($request, $this->rules);
$data = array();
foreach($request->description as $key=>$value)
$data[]=[
'description'=> $value,
'log_time'=> $request->log_time[$key],
'call_id'=>$call->id,
];
PortLog::create($data);
当我检查 dd($data)
array:2 [▼
0 => array:3 [▼
"description" => "des"
"log_time" => ""
"call_id" => 16
]
1 => array:3 [▼
"description" => ""
"log_time" => "hi"
"call_id" => 16
]
]
我做错了什么?
【问题讨论】:
错误告诉你。preg_match()
(在您的代码中的任何位置)没有被赋予正确的字符串参数。您的这部分代码没有我可以看到的preg_match()
,因此此代码似乎与问题无关。
@Anant 不是它的错误非法字符串
是的,对不起,我当时正在删除我的评论,但由于网络问题,它没有被删除。
【参考方案1】:
您似乎正试图在一个语句中插入多个 port_logs
。但是,create()
方法仅用于创建模型的一个实例。您要么需要使用insert()
语句,要么通过$data
将代码更新为foreach
并发出多个create()
语句。
PortLog::insert($data);
// or
foreach($data as $row)
PortLog::create($row);
如果您只想插入数据,并且不想实例化一堆PortLog
实例,那么insert()
方法是可行的方法。如果您需要为每一行实例化一个新的PortLog
实例,那么create()
方法是可行的方法。
【讨论】:
【参考方案2】:检查模型可填写字段...它似乎缺少 []
【讨论】:
以上是关于preg_match() 期望参数 2 是字符串,数组给定错误的主要内容,如果未能解决你的问题,请参考以下文章
如何转义 preg_match 模式中的斜杠字符? [复制]
PHP - ini_set() 期望参数 2 是字符串,给定整数