在共享代码之前,我将尝试解释我要完成的工作,以便您理解。我试图将多个值添加到多维数组。因此,我有一个多维数组,并希望向多维数组中的每个数组添加一个以上的值。当前,我可以通过创建另一个数组,然后将数组的数组加在一起来添加一个值。我查找了多个答案,但是它们不适用于我的循环,并且我不理解如何使它们在我的应用程序中工作,并且其中一些仅通过添加一个值(而不是多个值)来解释它。
代码(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将是在产品对象中进行的另一次计算。
我希望可以找到解决方案,因为我已经停滞了一段时间,与此同时,我将继续研究数组。
如果对我的代码或解释还有其他疑问,请随时问我。
再次感谢您阅读我的问题。
干杯科迪
答案 0 :(得分:0)
我可能遗漏了一些东西,但是我相信您可以删除第二个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
}
如果需要,也可以将&
用作foreach($csv as &$row)
,然后只需将元素添加到行中就成为$row[]
。
希望有帮助!