我正在使用 XMLRPC 构建一个 XML 结构,将产品信息传递给第三方系统。我需要构建一个产品自定义选项的关联数组,并且我不知道在每种情况下使用什么语法,因为值是一个对象。
我无法像往常一样调试和使用它我已经将它应用到站点,XMLRPC 抛出一个错误,说它无法序列化我构建的对象,然后我很快又将它切换回来。
如果我像这样对其进行硬编码,它可以正常工作。
$item_array = array(
"product_id" => new xmlrpcval($item->getSku()),
"name" => new xmlrpcval($item->getName()),
"price" => new xmlrpcval($item->getBaseCalculationPrice(), 'double'),
"vat_inclusive" => new xmlrpcval(0,'int'),
"quantity" => new xmlrpcval($item->getQty(),'int'),
"option_text" => new xmlrpcval(
array(
"option_1" => new xmlrpcval("Colour: Military Black"),
"option_2" => new xmlrpcval("Sizes: L")
),
"struct")
);
这是我需要生成的以下部分,特别是 foreach 循环中的数组,因为我不知道会有多少选项;
"option_text" => new xmlrpcval(
array(
"option_1" => new xmlrpcval("Colour: Military Black"),
"option_2" => new xmlrpcval("Sizes: L")
),
"struct")
如果我像下面那样做,那么结果很好,但是值是一个字符串而不是一个对象,XMLRPC 不能序列化;
$optioncount = 1;
$attList = array();
foreach ( $attributes as $attribute => $value ) {
$attpair = implode(": ", $value);
$attList['option_'. $optioncount] = 'new xmlrpcval("'.$attpair.'")';
$optioncount++;
}
如果var_dump($attList)
我得到;
array(2) {
["option_1"]=>
string(39) "new xmlrpcval("Colour: Military Black")"
["option_2"]=>
string(25) "new xmlrpcval("Sizes: L")"
}
任何其他方式似乎都会变成$attList
一团糟——我知道这应该是非常基本的,但对于我的生活,我无法让它发挥作用。感谢您的任何指示。
如果我var_dump($attList)
在使用时new xmlrpcval($attpair);
得到;
array(2) {
["option_1"]=>
object(xmlrpcval)#469 (3) {
["me"]=>
array(1) {
["string"]=>
string(22) "Colour: Military Black"
}
["mytype"]=>
int(1)
["_php_class"]=>
NULL
}
["option_2"]=>
object(xmlrpcval)#433 (3) {
["me"]=>
array(1) {
["string"]=>
string(8) "Sizes: L"
}
["mytype"]=>
int(1)
["_php_class"]=>
NULL
}
}