Php Var_dump在数组中显示2个元素,但foreach只显示最后一个元素
因此,我将向Php Var_dump在数组中显示2个元素,但foreach只显示最后一个元素,php,Php,因此,我将向FormData添加一个对象数组,并使用ajaxpost请求发送表单 在我的php页面上,我可以很好地访问所有表单元素(使用通常的$\u POST['field\u name']),但是当我尝试访问我附加的数组元素时,我遇到了一些问题 基本上,如果我var\u dump元素(称为$\u POST['dynamic\u form']]),我会看到一个2的数组(这是正确的),但如果我尝试循环此数组并回显值,则只回显数组的最后一个元素 for (var i = 0; i &
FormData
添加一个对象数组,并使用ajax
post请求发送表单
在我的php页面上,我可以很好地访问所有表单元素(使用通常的$\u POST['field\u name']
),但是当我尝试访问我附加的数组元素时,我遇到了一些问题
基本上,如果我var\u dump
元素(称为$\u POST['dynamic\u form']]
),我会看到一个2的数组(这是正确的),但如果我尝试循环此数组并回显值,则只回显数组的最后一个元素
for (var i = 0; i < form_elements.length; i++) {
formData.append('dynamic_form[]', JSON.stringify(form_elements[i])); }
//THIS IS MY AJAX REQUEST
$.ajax({
type: 'POST',
url:'myurl',
data:formData,
processData: false,
contentType:false,
success: function(msg){
console.log(msg);
alert("form saved");
},
error: function(){
alert("request failed");
} });//fine ajax
//HERE MY PHP $dynamic_form = $_POST['dynamic_form']; var_dump($dynamic_form);
foreach( $dynamic_form as $form ); {echo $form;}
for(var i=0;i
控制台中的var\u dump
结果正确:
数组(2){[0]=>string(59){“类型”:“文本”、“名称”:“值”:“2”、“标签”:“可分配”}[1]=>string(55){“类型”:“文本区域”、“名称”:“值”:“1”、“标签”:“asd”}
但是foreach
循环中的echo
仅显示数组的最后一个元素:
{“类型”:“文本区域”、“名称”:“值”:“1”、“标签”:“asd”}
is\u数组($dynamic\u form)
返回true(正确)
count($dynamic\u form)
返回2(正确)
我尝试了一个
for
循环,而不是foreach
循环,但仍然存在问题。。我做错了什么?虽然它应该作为一个类型关闭,但我会解释
foreach( $dynamic_form as $form ); {echo $form;}
被执行为
foreach( $dynamic_form as $form ) {
// do nothing
}
// echoes last value assigned to `$form` in loop.
{echo $form;}
是的
foreach( $dynamic_form as $form );
是绝对有效的代码(尽管我不知道你为什么需要它,除非它是一个打字错误,如问题所述)。你的
foreach
不应该工作。删除
之后foreach
。我一贴出问题就意识到有一个问题;在foreach中。。。我删除了分号,现在它按预期工作。有时候我很傻。。。对不起,谢谢!(我不知道为什么它部分使用分号,而没有引起错误或其他)模块化。所有的循环构造基本上都有相同的结构,它们都允许一个空的主体。是的,这是一个打字错误(一个非常愚蠢的错误)。但至少我学到了一些新东西!如果答案有帮助,你可以接受并有选择地投票。它将帮助其他用户,也会提高您的声誉。