PHP assosiative数组不能与foreach一起使用

时间:2017-05-31 00:14:07

标签: php arrays

我在发布信息以创建订单和发票时遇到问题。在其他变量中,有客户信息和其他东西,我创建了一个是一个看起来像这样的关联数组。

您好,感谢您的帮助,建议多位用户,如果我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 :(得分:0)

TL; DR

在HTML表单input / textarea error: could not find or load main class hello.main属性中定义数组键名时,不应在任何部分使用引号。

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">

或者一些类似的错误语法。您的问题最终是由PHP查找数组值<input name="purchase[0]['qty']" value="5"> <!-- should not be used this way --> 引起的,但您已将数组值设置为qty。你能看到区别么?

  

编辑:您使用哪种报价类型并不重要,只需使用一个!