在Foreach中添加字符串时PHP数组到字符串的转换



我有一个对象,其中包含具有各自值的货币属性。我需要在这些中添加额外的金额,我通过添加"+ TAX"来简化它。价值。

但是我一直得到"数组到字符串转换"在foreach中的第一行出现错误。我不明白为什么-值是字符串。">

更糟糕的是,新的object属性在自身内部重复。

这是我的代码

<?php
$result = new stdClass();
$result->GBP = "10.00";
$result->USD = "12.00";

foreach ($result as $currency => $value) {
$currencyWithTax = $value .' + TAX';
$result->total[$currency] = $currencyWithTax;
}
print_r($result);

我在这里创建了一个3v4l来演示。

我将数组转换为字符串错误,输出如下:

stdClass Object
(
[GBP] => 10.00
[USD] => 12.00
[total] => Array
(
[GBP] => 10.00 + TAX
[USD] => 12.00 + TAX
[total] => Array + TAX
)
)

我不知道如何将"数组"解析为"字符串"。错误,最终为什么"总";属性在"total"中重复。财产。我需要我的最终输出看起来像:

stdClass Object
(
[GBP] => 10.00
[USD] => 12.00
[total] => Array
(
[GBP] => 10.00 + TAX
[USD] => 12.00 + TAX
)
)

我错过了什么?谢谢!

在循环时修改对象,添加total属性。因此,循环的后续迭代尝试使用total作为货币,并在嵌套的total数组中创建另一个元素。

在循环期间使用单独的变量,然后将其添加到对象中。

$totals = [];
foreach ($result as $currency => $value) {
$currencyWithTax = $value .' + TAX';
$totals[$currency] = $currencyWithTax;
}
$result->total = $totals;

您的foreach正在添加USD作为数组

试试这个

<?php
$result = new stdClass();
$result->GBP = "10.00";
$result->USD = "12.00";
foreach ($result as $currency => $value) {
if (is_object($value) || is_array($value)) continue;
$currencyWithTax = $value .' + TAX';
$result->total[$currency] = $currencyWithTax;
}
print_r($result);

最新更新