这是我试图理解为什么我得到如此不合逻辑的结果的 2 天。让我用一个例子来解释。我根据这个简单的数组创建发票。
Array
(
[0] => Array
(
[userid] => 208
[number_of_services] => 3
[username1] => sara
[income1] => 10
[username2] => mark
[income2] => 18
[username3] => joe
[income3] => 12
)
[1] => Array
(
[userid] => 4
[number_of_services] => 1
[username1] => bruce
[income1] => 5
)
[2] => Array
(
[userid] => 303
[number_of_services] => 1
[username1] => michael
[income1] => 7
)
)
使用此数组,我想为具有以下 ID 的客户创建 3 张发票:208、4、303。我可以用一个简单的 foreach 来完成它。
foreach($myarray AS $key => $value)
{
// create my invoice
}
现在您可以看到 ID 为208的客户端有多个用户名。我将它们存储为 [username1]、[username2]、[username3] 等。
[0] => Array
(
[userid] => 208
[number_of_services] => 3
[username1] => sara
[income1] => 10
[username2] => mark
[income2] => 18
[username3] => joe
[income3] => 12
)
我想在发票中将每个用户名显示为新行(项目),所以我执行以下操作:
foreach($myarray AS $key => $value)
{
for($n=1; $n<=$value["number_of_services"]; $n++)
{
$invoice["itemdescription$n"] = "Username: ".$value["username$n"]."";
$invoice["itemamount$n"] = $value["income$n"];
$invoice["itemtaxed$n"] = 1;
}
}
现在有了这个循环,我应该有:
- 客户 4 的 1 张发票,含 1 件商品(布鲁斯 -> 5 欧元)
- 客户 303 的 1 张发票,其中 1 件商品(迈克尔 -> 7 欧元)
- 客户 208 的 1 张发票,包含 3 个项目(sara -> 10,mark -> 18,joe -> 12)
但我总是得到:
- 客户 4 的 1 张发票,包含 3 件商品(布鲁斯 -> 5 欧元,马克 -> 18,乔 -> 12)
- 客户 303 的 1 张发票,包含 3 个项目(迈克尔 -> 7 欧元,马克 -> 18,乔 -> 12)
- 客户 208 的 1 张发票,包含 3 个项目(sara -> 10,mark -> 18,joe -> 12)
我不明白为什么脚本不断将客户端208的 [username2]、[income2] 和 [username3]、[income3]合并到客户端4和303中的原因!我在每一步都调试了脚本,问题似乎出在 for() 循环中。
任何的想法?