$ Order Доступ к защищенному массиву - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь получить доступ к метаданным в $ order через систему заказов woocommerce.Система имеет дополнительные поля заказа.Именно эти поля я пытаюсь получить доступ.Каждый вариант, который я пробую, просто заканчивается ошибкой сервера ИЛИ данные пустые на выходе.Я пробовал $ MetaData-> id, $ MetaData [0] ['id'], используя цикл foreach для каждой записи ... и т. Д. И т. Д. Это не имеет значения, данные в виде строки не отображаются.Я подозреваю, что это как-то связано с тем, что это защищенный массив, и я понятия не имею, как им управлять ... очевидно.Он не работает.

Вот код и некоторые результаты теста.

$order        = new WC_Order( $order_id );
$order_data   = $order->get_data();  
$MetaData = $order_data['meta_data'];
DebugLog(json_encode($MetaData));

// OUTPUT of JSON_ENCODE:
// [{"id":2658,"key":"business-name","value":"BUSINESS NAME HERE"},{"id":2659,"key":"full-business-address","value":"1028 STREET Dr"},{"id":2660,"key":"city","value":"CITY NAME"},{"id":2661,"key":"state","value":"California"},{"id":2662,"key":"zip","value":"900XX"},{"id":2663,"key":"_subscription_switch_data","value":[]},{"id":2723,"key":"_stripe_customer_id","value":"XXXX"},{"id":2724,"key":"_stripe_source_id","value":"XXXX"},{"id":2727,"key":"_stripe_charge_captured","value":"yes"},{"id":2728,"key":"_stripe_fee","value":"0.45"},{"id":2729,"key":"_stripe_net","value":"4.55"},{"id":2730,"key":"_stripe_currency","value":"USD"},{"id":2736,"key":"_wc_memberships_access_granted","value":{"215":{"already_granted":"yes","granting_order_status":"processing"}}},{"id":2748,"key":"_wc_memberships_access_granted","value":{"215":{"already_granted":"yes","granting_order_status":"processing"}}}]

 foreach($MetaData as $index => $feature)
  {
   $MetaValue = $MetaData[$index ]['key']; 
   DebugLog($MetaValue);
  }

Окончательный foreach вызывает ошибку сервера.Я просто не вижу этого, и я попробовал все виды комбинаций.

Я также пробовал:

foreach($MetaData as $feature)  
  {
   $MetaValue = $feature['key']; 
   DebugLog($MetaValue);
  }

и

$MetaValue = $MetaData[0]['key']

Те же результаты.Любая идея?Чего мне не хватает в этих самых основных инструментах программирования?

1 Ответ

0 голосов
/ 22 февраля 2019

UPDATE!ПОЛУЧИЛ ЭТО Дикая езда.Вы должны создать указатель на строку (MetaData), но затем обрабатывать каждую строку как свой собственный массив с индексами.

РЕШЕНИЕ

  $order        = new WC_Order( $order_id );
  $order_data   = $order->get_data();  
  $MetaData = $order_data['meta_data'];

  foreach($MetaData as $SubRow)
  {
  DebugLog($SubRow->id);
  DebugLog($SubRow->key);   
  DebugLog($SubRow->value);     
  }

Спасибо всем, кто написал и дал мнеНемного подумай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...