Var_dump在数组中显示2个元素,但是foreach仅显示最后一个元素

时间:2019-04-24 10:15:00

标签: php

因此,我要将对象数组附加到FormData并发送带有ajax发布请求的表单。

在我的php页面上,我可以正常访问所有表单元素(使用通常的$_POST['field_name']),但是当我尝试访问附加的数组元素时,我遇到了一些问题。

基本上,如果我var_dump元素(称为$_POST['dynamic_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;} 

控制台中的var_dump结果正确:

  

array(2){[0] =>字符串(59)“ {” type“:” text“,” name“:”“,” value“:” 2“,” label“:” disponibile“} “ [1] =>字符串(55)” {“ type”:“ textarea”,“ name”:“”,“ value”:“ 1”,“ label”:“ asd”}“}

,但是echo循环内的foreach仅显示数组的最后一个元素:

  

{“ type”:“ textarea”,“ name”:“”,“ value”:“ 1”,“ label”:“ asd”}

is_array($dynamic_form) 返回true(正确)

count($dynamic_form) 返回2(正确)

我尝试了for而不是foreach循环,但是仍然有问题..我在做什么错了?

1 个答案:

答案 0 :(得分:0)

尽管应该将其作为一种类型关闭,但我会解释

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 );

绝对有效的代码(尽管我不知道为什么除非有输入错误,否则为什么会需要它)。