Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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/0/laravel/11.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 我的foreach循环没有检索键值对,即使Javascript发送了正确的数据_Php_Laravel_Foreach - Fatal编程技术网

Php 我的foreach循环没有检索键值对,即使Javascript发送了正确的数据

Php 我的foreach循环没有检索键值对,即使Javascript发送了正确的数据,php,laravel,foreach,Php,Laravel,Foreach,当我通过ajax(axios)提交按钮时,我会将以下数据发送到Laravel,直到控制台打印为止: {name: "task", fields: Array(2)} fields: Array(2) 0: {_token: "hRQyJ9NlwLdKpZbU7W2REV2I5YF6Pg8D6HcoCof7", name: "name1", type: "type1", default: "default1&

当我通过ajax(axios)提交按钮时,我会将以下数据发送到Laravel,直到控制台打印为止:

{name: "task", fields: Array(2)}
fields: Array(2)
0: {_token: "hRQyJ9NlwLdKpZbU7W2REV2I5YF6Pg8D6HcoCof7", name: "name1", type: "type1", default: "default1"}
1: {_token: "hRQyJ9NlwLdKpZbU7W2REV2I5YF6Pg8D6HcoCof7", name: "name2", type: "type2", default: "default2"}
length: 2
__proto__: Array(0)
name: "task"
__proto__: Object
现在我想读取来自fields数组的数据,对于每次迭代,我想将键和值添加到一个字符串中,并放置一个新行

我的控制器里有这个:

$fields = $request->fields;
$a = '';
foreach ($fields as $key => $value) {
    $a .= "value of $key is $value";
}
return $a;
当我点击保存按钮时,我得到500个内部服务器错误

在此过程中,我通过返回第一个元素再次检查$fields是否为空,并获得成功:

return $fields[0];
以下是我在JS中的内容:

let crud_object = {
    name: crud_name.value,
    fields: data
}
console.log(crud_object)

axios.post('/dashboard/project/new', crud_object)
.then( res => console.log(res.data))
.catch(err => console.log(err.response.dta))
除了控制台中打印的对象外,我还看到:

VM73400:1 POST http://127.0.0.1:8000/dashboard/project/new 500 (Internal Server Error)
(anonymous) @ VM73400:1
dispatchXhrRequest @ app.js:285
xhrAdapter @ app.js:119
dispatchRequest @ app.js:765
Promise.then (async)
request @ app.js:542
Axios.<computed> @ app.js:567
wrap @ app.js:1131
(anonymous) @ all.js:68

我想你的连接是错的

$fields = $request->fields;
$a = '';
foreach ($fields as $field){
    foreach ($field as $key => $value) {
        $a .= " value of " . $key . " is " . is_string($value) ? $value : 
        implode(', ',$value);
    }
}
return $a;

在任何人提供任何有帮助的信息之前,您需要向我们提供错误消息。不幸的是,这不是@sta的答案。通常,如果您有双引号,您可以自由地在字符串中使用带美元符号的变量。我试过你的建议来重新确认你的错误是什么?我先得到一台500的内部服务器,然后是控制台中的undefined.On.env change
APP_DEBUG=true
并获取错误我仍然得到完全相同的错误:local.error:Array to string conversion您可以指定在stacktraceLine 22中获取此错误的行,哪一个在foreachIt中如果你能显示$field中的内容最好我刚刚编辑了这个问题,因为我设法记录了$field中的内容。
$fields = $request->fields;
$a = '';
foreach ($fields as $field){
    foreach ($field as $key => $value) {
        $a .= " value of " . $key . " is " . is_string($value) ? $value : 
        implode(', ',$value);
    }
}
return $a;