不知道这里发生了什么,数组应该是这样的:
Array (
[69] => Array (
[KR] => 1
)
[70] => Array (
[KR] => 2
)
[70] => Array (
[LR] => 1
)
[71] => Array (
[LR] => 1
)
)
这是我的代码:
foreach ($_POST as $key => $value) {
//Split the ID and Product into individual variable
$tmp = explode("_",$key);
$id = $tmp[0]; $product = $tmp[1];
//Generate array's for each sale
$sales[$id] = array($product => $value);
}
print_r($sales);
以下是它产生的结果:
Array (
[69] => Array (
[KR] => 1
)
[70] => Array (
[LR] => 1
)
[71] => Array (
[LR] => 1
)
)
这是一个快速表,您可以看到实际的变量集合
69_KR 1
70_KR 2
70_LR 1
71_LR 1
答案 0 :(得分:1)
替换
$sales[$id] = array($product => $value);
与
$sales[$id][$product] = $value;
答案 1 :(得分:1)
如果多次出现相同的销售ID,则不应将其用作数组密钥。第二次销售ID为70时,它会覆盖第一个的值。
有很多方法可以改变这个,这里有一个建议:
在foreach循环之前,创建空数组$sales = array();
(你可能已经这样做了)
如果你不介意一个关联数组(IMO他们使代码更易读/可维护 - 想想别人在5年内改变你的代码并在$ sales数组上做一个var_dump),那么在foreach中尝试这个:
$sales[] = array("sales_id" => $id, "product" => $product, "value" => $value);
稍后您将不得不略微区别地处理数组,但print_r或var_dump确实很容易阅读。 (我还想在输出到浏览器时将print_r包装在<pre>
标签中,以获得非常好的数组格式。)
答案 2 :(得分:1)
与
$sales[$id] = array($product => $value);
您正在破坏以前版本的$ sales [$ id]。你正在丢失数据。
您需要另一个数据结构来存储返回的值。像一个清单。看起来像
销售=每次销售的清单。 然后访问列表长度的每个销售迭代。