我现在正在使用woocommerce 2.6,$item->get_items
的woocommerce 3.0输出已从Array更改为Objects。
我想通过键名将对象std类转换为数组以获取数据。以下是自定义woocommerce 3.x vardump的输出。
请帮我解决这个问题。
[1]=>
object(stdClass)#18913 (3) {
["id"]=>
int(3944)
["key"]=>
string(5) "Vuxen"
["value"]=>
string(15) "2 (4 800,00 Kr)"
}
[2]=>
object(stdClass)#18912 (3) {
["id"]=>
int(3945)
["key"]=>
string(18) "Totalt biljettpris"
["value"]=>
string(11) "4 800,00 Kr"
}
[3]=>
object(stdClass)#18911 (3) {
["id"]=>
int(3946)
["key"]=>
string(30) "jrp_name_adult_ordinary_7day_1"
["value"]=>
string(26) "undefined/kjhjksh/jdhfjshk"
}
[4]=>
object(stdClass)#18910 (3) {
["id"]=>
int(3947)
["key"]=>
string(13) "Nationality_1"
["value"]=>
string(25) "Nej, ej på japanskt pass"
}
[5]=>
object(stdClass)#18909 (3) {
["id"]=>
int(3948)
["key"]=>
string(30) "jrp_name_adult_ordinary_7day_2"
["value"]=>
string(33) "undefined/jhdsfjjhdkjs/jkdshfjshj"
}
[6]=>
object(stdClass)#18908 (3) {
["id"]=>
int(3949)
["key"]=>
string(13) "Nationality_2"
["value"]=>
string(21) "Ja, på japanskt pass"
}
[7]=>
object(stdClass)#18907 (3) {
["id"]=>
int(3950)
["key"]=>
string(11) "Avresedatum"
["value"]=>
string(10) "30/09/2017"
}
[8]=>
object(stdClass)#18906 (3) {
["id"]=>
int(3951)
["key"]=>
string(12) "Sätt kryss:"
["value"]=>
string(65) "Jag har förstått villkoren för användning av Japan Rail Pass."
}
[9]=>
object(stdClass)#18905 (3) {
["id"]=>
int(3952)
["key"]=>
string(12) "Sätt kryss:"
["value"]=>
string(88) "Jag förstår att det är mitt ansvar att se till att jag har korrekt visum i mitt pass."
}
[10]=>
object(stdClass)#18904 (3) {
["id"]=>
int(3953)
["key"]=>
string(12) "Sätt kryss:"
["value"]=>
string(88) "Jag har förstått villkoren för användning av Japan Rail Pass som japansk medborgare."
}
[11]=>
object(stdClass)#18903 (3) {
["id"]=>
int(3954)
["key"]=>
string(12) "Sätt kryss:"
["value"]=>
string(84) "Jag förstår att det är mitt ansvar att se till att jag har korrekt dokumentation."
}
答案 0 :(得分:1)
使用此:
$itemsArray = array_map(function($v) {
return (array)$v;
}, $item->get_items);
答案 1 :(得分:0)
$array = json_decode(json_encode($nameOfStdClassVariable), true);
答案 2 :(得分:0)
你可以这样试试,
$array = json_decode(json_encode($item), true);
答案 3 :(得分:0)
当你调用其余的API时,你可以传递一个带有params的数组。如果你把这个参数“return_as_array”设为true,它们会将值返回为Array。
$options = array('debug' => false,
'return_as_array' => true,
'validate_url' => false,
'timeout' => 30,
'ssl_verify' => false);
new WC_API_Client($url, $consumer_key, $consumer_secret, $options);
答案 4 :(得分:0)
您可以使用以下代码将所有对象获取到数组。如果多次找到对象中的键,它将按键名创建唯一的数组,并将所有对象的所有值提取到唯一键。
$order = wc_get_order($order_id);
foreach ($order->get_items() as $item_id => $item_obj) {
$item_data = $item_obj->get_data();
foreach ($item_data as $key => $object) {
}
for($m=0;$m<count($object);$m++) {
$new_array[$object[$m]->key][$m] = $object[$m]->value;
}
}
echo "<pre>";var_dump($new_array);echo "</pre>";