2017-05-31 51 views
1

我在发布信息来创建订单和发票时出现问题。在其他变量中,包括客户信息和其他东西,我创建了一个看起来像这样的关联数组。PHP的协会阵列不与foreach合作

您好,感谢您的帮助,由多个用户的建议,如果我print_r($_POST)这就是结果:

Array ( 
[clientName] => Client inc 
[clientTaxid] => 00000000000 
[clientAdress] => 1234 Main RD 
[clientAdress2] => City 
[clientAdress3] => State 
[clientZipCode] => 53370 
[purchase] => Array ( 
    [0] => Array ( 
     ['qty'] => 1 
     ['code'] => 1234 
     ['description'] => Product 1 
     ['price'] => 1 
     ['tax'] => .16 
     ) 
    [1] => Array ( 
     ['qty'] => 1 
     ['code'] => 3456 
     ['description'] => Product 2 
     ['price'] => 3 
     ['tax'] => .04 
     ) 
    [2] => Array ( 
     ['qty'] => 1 
     ['code'] => 6789 
     ['description'] => Product 3 
     ['price'] => 5 
     ['tax'] => 0.0 
     ) 
    ) 
) 

但是,当我试图通过数组使用foreach循环,我不能访问存储的值。

foreach($_POST['purchase'] AS $pc){ 
    var_dump($pc); 
    echo $pc['qty']; 
    echo $pc['price']; 
    echo $pc['code']; 
} 
var_dump($_POST['purchase'][0]['description']); 

我只是空白没有任何错误。我是否从表单中创建了我的数组?有什么建议么?我可能会工作太久而陷入困境。 我试过的var_dump的建议,这是结果:

array(5) { 
    ["'qty'"]=> string(1) "1" 
    ["'code'"]=> string(4) "1234" 
    ["'description'"]=> string(3) "foo" 
    ["'price'"]=> string(1) "1" 
    ["'tax'"]=> string(3) ".16" 
} 
array(5) { 
    ["'qty'"]=> string(1) "1" 
    ["'code'"]=> string(4) "3456" 
    ["'description'"]=> string(3) "foo" 
    ["'price'"]=> string(1) "3" 
    ["'tax'"]=> string(3) ".04" 
} 
array(5) { 
    ["'qty'"]=> string(1) "1" 
    ["'code'"]=> string(4) "1234" 
    ["'description'"]=> string(3) "foo" 
    ["'price'"]=> string(2) "25" 
    ["'tax'"]=> string(3) ".16" 
} 
NULL 

+1

该数组的嵌套深度比 –

+0

做'print_r($ _ POST);'并发布您的问题中的内容。因为如果$ _POST包含你发布的内容,那么你的代码就可以工作。 – Enstage

+0

您是否介意将您的表单用于POST请求的地方分享您的代码? – ryo7689

回答

0

TL; DR

在HTML表单中输入/ textarea的name定义数组的键名时,你不应该在任何地方使用引号属性。


array(5) { 
    ["'qty'"]=> string(1) "1" 
    ["'code'"]=> string(4) "1234" 
    ["'description'"]=> string(3) "foo" 
    ["'price'"]=> string(1) "1" 
    ["'tax'"]=> string(3) ".16" 
} 

这看起来对症您的问题,在我看来,你是表单数据,包括形式name定义引号。

你需要澄清的是你输入的名字是:

<input name="purchase[0][qty]" value="5"> 

<input name="purchase[0]['qty']" value="5"> <!-- should not be used this way --> 

或一些类似的错误语法。您的问题最终是由PHP寻找数组值qty而引起的,但您已将数组值设置为'qty'。你能看到区别么?

编辑:您使用哪种报价类型无关紧要,只需使用ONE!

+0

非常感谢,实际上输入是在购买订单时添加的,因此他们看到了这个:。我消除了单引号和问题解决。

+0

您无需在HTML中额外引用您的'name ='值,现在很高兴它适用于您! ':-)' – Martin

+0

@EliasZarte请刷新并看看我的最终答案。干杯 – Martin