Php for循环中不需要的数组组合

Php for循环中不需要的数组组合,php,arrays,for-loop,foreach,cycle,Php,Arrays,For Loop,Foreach,Cycle,我花了两天时间试图理解为什么我会得到如此不合逻辑的结果。让我举例说明。我基于这个简单的数组创建发票 Array ( [0] => Array ( [userid] => 208 [number_of_services] => 3 [username1] => sara [income1] => 10

我花了两天时间试图理解为什么我会得到如此不合逻辑的结果。让我举例说明。我基于这个简单的数组创建发票

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张发票:2084303。我可以用一个简单的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;

    }

}
foreach($myarray作为$key=>$value)
{
对于($n=1;$n 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]合并到客户机4303!我在每一步都调试了脚本,问题似乎出现在for()循环中

    有什么想法吗?

    foreach($key=>myarray$value)
    
    foreach($myarray AS $key => $value)
    {
        for($n=1; $n<=$value["number_of_services"]; $n++)
        {
        $invoice[] = array(
            "itemdescription" => "Username: " . $value . "username" . $n,
            "itemamount" . $n = $value . "income" . $n,
            "itemtaxed" . $n = 1
        );
        }
    }
    
    { 对于($n=1;$n“用户名:”.$value.“用户名”.$n, “项目金额”。$n=$value。“收入”。$n, “项目税”。$n=1 ); } }

    尝试此操作。

    此代码按预期工作。显示显示输出的其他代码。