如果任何元素为空,则为未定义的索引错误

时间:2017-01-06 06:36:36

标签: arrays object laravel-5 undefined

我在angularjs中单击发送5个输入值。数据作为对象的对象发送。例如

Object{0:Object, 1:object, 2:Object .., 5:Object}

每个对象都有两个输入,分别是名字和姓氏。用户可以发送任何输入对。

我发送此邮件请求。现在在后端方面,我正在使用Laravel。我将这个对象存储在变量中  `$ X = $请求 - >输入('数据&#39);

我为每个创建新记录的对象循环它。

我面临的问题: 如果发送了所有对象,则将数据正确保存在数据库中。 但是如果其中一个对象为空,则Empty表示如果使用仅输入第二个输入和第三个输入,则将第一个,第三个和第五个输入留空。

然后laravel抛出未定义索引的错误,因为第一个对象没有收到第一个请求的任何名字或姓氏。那我怎么能解决这个问题。我希望它能够更新收到的字段。

2 个答案:

答案 0 :(得分:1)

似乎你需要在持久化之前过滤掉空对象。

$data = $request->input('data');
$dataToSave = [];
foreach ($data as $value) {
    if (!empty($value)) {
        $dataToSave[] = $data;
    }
}
// persist $dataToSave with your logic

最好将您的firstnamelastname更改为nullable,以便接受null

答案 1 :(得分:0)

检查ajax函数中的输入值并仅传递这些键值