首页 > 解决方案 > PHP如何将多个值添加到多维度数组

问题描述

在共享代码之前,我将尝试解释我要完成的工作,以便您理解。我正在尝试将多个值添加到多维数组中。所以我有一个多维数组,并且想为多维数组中的每个数组添加多个值。目前,我可以通过创建另一个数组并将数组添加在一起来添加一个值。我查找了多个答案,但它们不适用于我的循环,我不明白如何使它们在我的应用程序中工作,其中一些仅通过添加一个值而不是多个值来解释它。

代码(PHP):

foreach ($csv as $row) {
      $purchasePrice = str_replace(',', '.', $row[1]);

      $object = new Product($purchasePrice, 10, 21);
      $calculatedValues[]= $object->margePercentage;

    }

      foreach($calculatedValues as $key => $val){ //Adds the 2 array's together
        $csv[$key][] = $val;
    }

这段代码的输出是:

Array
(
    [0] => Array
        (
            [0] => id
            [1] => eur
            [2] => title
            [3] => marge
        )

    [1] => Array
        (
            [0] => 25200
            [1] => 30,74
            [2] => Humming teddy bear, verbetert kwaliteit van slaap
            [3] => 19.261617724033
        )

    [2] => Array
        (
            [0] => 25201
            [1] => 30,74
            [2] => Humming teddy bear, verbetert kwaliteit van slaap, circa 45cm
            [3] => 19.261617724033
        )

    [3] => Array
        (
            [0] => 25202
            [1] => 26,06
            [2] => Humming teddy bear, verbetert kwaliteit van slaap, circa 28x28cm
            [3] => 18.567221241214
        )

如您所见,它只需 1 个值即可正常工作。foreach 为每个$row[1](价格)创建一个新对象并计算一个不相关但发生在产品对象中的百分比。然后我将值添加到$calculatedValues[].

现在我想添加多个值,而不仅仅是一个($object->margePercentage)。我想要这样的输出:

Array
(
    [0] => Array
        (
            [0] => id
            [1] => eur
            [2] => title
            [3] => -2.6572
            [4] => value2
        )

    [1] => Array
        (
            [0] => 25200
            [1] => 30,74
            [2] => Humming teddy bear, verbetert kwaliteit van slaap
            [3] => 19.261617724033
            [4] => value2
        )

    [2] => Array
        (
            [0] => 25201
            [1] => 30,74
            [2] => Humming teddy bear, verbetert kwaliteit van slaap, circa 45cm
            [3] => 19.261617724033
            [4] => value2
        )

    [3] => Array
        (
            [0] => 25202
            [1] => 26,06
            [2] => Humming teddy bear, verbetert kwaliteit van slaap, circa 28x28cm
            [3] => 18.567221241214
            [4] => value2
        )

value2在这种情况下,只是为了显示我希望值在数组中的位置,value2 将是在产品对象中进行的另一个计算。

我希望我能找到一个解决方案,因为我现在被困了很长时间,同时我将更多地研究数组。

如果对我的代码或解释有任何疑问,请随时问我。

再次感谢您阅读我的问题。

干杯科迪

标签: phparrays

解决方案


我可能遗漏了一些东西,但我相信您可以删除第二个 for 循环,在该循环中您将额外的值分配给您的$csv元素并在同一个循环中执行 - 即使是更多的值。

考虑以下:

foreach ($csv as $key => $row) {
  $purchasePrice = str_replace(',', '.', $row[1]);

  $object = new Product($purchasePrice, 10, 21);
  $csv[$key][] = $object->margePercentage;
  $csv[$key][] = $object->getValue2(); // or whatever function needed for get your value2
}

如果你愿意,你也可以使用&asforeach($csv as &$row)然后将元素添加到行 as $row[]

希望有帮助!


推荐阅读