我让这段代码生成一个传递给SoapClient()的请求。这只是一个更大的请求对象的一部分。
//OPTIONAL DAMAGE AND TRAVEL INSURANCE HANDLING
if ( $fee_insurance != 0 || $fee_damage != 0 ) {
$tmp_node->UnitStays->UnitStay->UnitRates->UnitRate->Rates->Rate->AdditionalCharges = new StdClass();
//TRAVEL INSURANCE
if ($fee_insurance != 0) {
$AdditionalChargeINS = array(
'Quantity' => '1',
'ChargeTemplateID' => $ChargeTemplateID_INS,
'Amount' => array(
'AmountBeforeTax' => $fee_insurance,
'Taxes' => array(
'Amount' => '0.00'
)
)
);
}
//DAMAGE INSURANCE
if ($fee_damage != 0) {
$AdditionalChargeDAM = array(
'Quantity' => '1',
'ChargeTemplateID' => $ChargeTemplateID_DAM,
'Amount' => array(
'AmountBeforeTax' => $fee_damage,
'Taxes' => array(
'Amount' => '0.00'
)
)
);
}
$AdditionalChargeArray = (object) array($AdditionalChargeINS,$AdditionalChargeDAM);
$tmp_node->UnitStays->UnitStay->UnitRates->UnitRate->Rates->Rate->AdditionalCharges->AdditionalCharge = $AdditionalChargeArray;
}
这将在请求中生成以下内容。
[AdditionalCharges] => stdClass Object
(
[AdditionalCharge] => stdClass Object
(
[0] => Array
(
[Quantity] => 1
[ChargeTemplateID] => 6595
[Amount] => Array
(
[AmountBeforeTax] => 43.62
[Taxes] => Array
(
[Amount] => 0.00
)
)
)
[1] => Array
(
[Quantity] => 1
[ChargeTemplateID] => 65802
[Amount] => Array
(
[AmountBeforeTax] => 49.00
[Taxes] => Array
(
[Amount] => 0.00
)
)
)
)
)
但我需要像这样结束(注意两个节点都称为"AdditionalCharge":
[AdditionalCharges] => stdClass Object
(
[AdditionalCharge] => stdClass Object
(
[Quantity] => 1
[ChargeTemplateID] => 6595
[Amount] => Array
(
[AmountBeforeTax] => 43.62
[Taxes] => Array
(
[Amount] => 0.00
)
)
)
[AdditionalCharge] => stdClass Object
(
[Quantity] => 1
[ChargeTemplateID] => 65802
[Amount] => Array
(
[AmountBeforeTax] => 49.00
[Taxes] => Array
(
[Amount] => 0.00
)
)
)
)
我知道关于对象和数组之间的关系,有一些非常基本的东西我不能理解,但对于我来说,我还是搞不懂。
发布于 2018-08-12 09:20:36
这段代码会让你更接近你所说的你需要的东西。
$AdditionalChargeINS = array(
'Quantity' => '1',
'ChargeTemplateID' => "ChargeTemplateID_INS",
'Amount' => array(
'AmountBeforeTax' => "fee_insurance",
'Taxes' => array(
'Amount' => '0.00'
)
)
);
$AdditionalChargeDAM = array(
'Quantity' => '1',
'ChargeTemplateID' => "ChargeTemplateID_DAM",
'Amount' => array(
'AmountBeforeTax' => "fee_damage",
'Taxes' => array(
'Amount' => '0.00'
)
)
);
$arr1["additionalCharge"] = (object)$AdditionalChargeDAM;
$arr2["additionalCharge"] = (object)$AdditionalChargeDAM;
$arr = (object)array((object)$arr1,(object)$arr2);
print_r($arr);
产生这个输出...
stdClass Object
(
[0] => stdClass Object
(
[additionalCharge] => stdClass Object
(
[Quantity] => 1
[ChargeTemplateID] => ChargeTemplateID_DAM
[Amount] => Array
(
[AmountBeforeTax] => fee_damage
[Taxes] => Array
(
[Amount] => 0.00
)
)
)
)
[1] => stdClass Object
(
[additionalCharge] => stdClass Object
(
[Quantity] => 1
[ChargeTemplateID] => ChargeTemplateID_DAM
[Amount] => Array
(
[AmountBeforeTax] => fee_damage
[Taxes] => Array
(
[Amount] => 0.00
)
)
)
)
)
这更接近于你需要的东西,也许足以让你朝着正确的方向前进。至少使用这个结构,你可以遍历你的对象列表,做你需要的任何处理,
您所声明的所需输出的主要问题是它包含一个具有重复键'additionalCharge‘的关联数组,这是PHP不允许的:-)
https://stackoverflow.com/questions/51804645
复制相似问题