我有一個物件,其中包含具有各自值的貨幣屬性。我需要為這些添加額外的金額,我通過附加“ TAX”值進行了簡化。
但是我在 foreach 的第一行不斷收到“陣列到字串轉換”錯誤。我不明白為什么 - 值是字串。"
更糟糕的是,新的物件屬性在自身內部重復。
這是我的代碼
<?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
)
)
我無法弄清楚如何解決“陣列到字串”錯誤,以及最終為什么“總”屬性在“總”屬性中重復。我需要我的最終輸出看起來像:
stdClass Object
(
[GBP] => 10.00
[USD] => 12.00
[total] => Array
(
[GBP] => 10.00 TAX
[USD] => 12.00 TAX
)
)
我錯過了什么?謝謝!
uj5u.com熱心網友回復:
您在回圈物件的同時修改物件,添加一個total屬性。因此,回圈的后續迭代嘗試將其total用作貨幣并在嵌套total陣列中創建另一個元素。
在回圈期間使用單獨的變數,然后將其添加到物件中。
$totals = [];
foreach ($result as $currency => $value) {
$currencyWithTax = $value .' TAX';
$totals[$currency] = $currencyWithTax;
}
$result->total = $totals;
uj5u.com熱心網友回復:
您的 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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473558.html
