我正在使用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
}
}
答案 0 :(得分:2)
构建数组必须如下所示:
$optioncount = 1;
$attList = array();
foreach ( $attributes as $attribute => $value ) {
$attpair = implode(": ", $value);
$attList['option_'. $optioncount] = new xmlrpcval($attpair);
$optioncount++;
}
然后:
"option_text" => new xmlrpcval(
$attList,
"struct")