Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 Var_dump在数组中显示2个元素,但foreach只显示最后一个元素_Php - Fatal编程技术网

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中。。。我删除了分号,现在它按预期工作。有时候我很傻。。。对不起,谢谢!(我不知道为什么它部分使用分号,而没有引起错误或其他)模块化。所有的循环构造基本上都有相同的结构,它们都允许一个空的主体。是的,这是一个打字错误(一个非常愚蠢的错误)。但至少我学到了一些新东西!如果答案有帮助,你可以接受并有选择地投票。它将帮助其他用户,也会提高您的声誉。