【问题标题】:Unwanted combination of arrays inside a for cyclefor循环中不需要的数组组合
【发布时间】:2013-04-26 10:08:42
【问题描述】:

这两天我试图理解为什么我得到如此不合逻辑的结果。让我用一个例子来解释。我根据这个简单的数组创建发票。

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;

    }

}

现在有了这个循环,我应该有:

  • 客户 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() 循环中。

有什么想法吗?

【问题讨论】:

标签: php arrays for-loop foreach cycle


【解决方案1】:
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
    );
    }
}

试试这个。

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2017-08-17
    相关资源
    最近更新 更多