php - 获取数组中的订单数据以在 Woocommerce 中对其进行 JSON 编码

标签 php arrays json woocommerce orders

我从 woocommerce 函数 wc_get_order 中获得了很多需要的信息,下面是其中的一些信息。

// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

$order_data = $order->get_data(); // The Order data

$order_id = $order_data['id'];
$order_parent_id = $order_data['parent_id'];
$order_status = $order_data['status'];
$order_currency = $order_data['currency'];
$order_version = $order_data['version'];
$order_payment_method = $order_data['payment_method'];
$order_payment_method_title = $order_data['payment_method_title'];
$order_payment_method = $order_data['payment_method'];
$order_payment_method = $order_data['payment_method'];

如何将所有内容放入数组中,然后放入 JSON_ENCODE?

我是否需要像这样单独执行每个值

$order_array = array("order id: " . $order_id . ", order currency:" . $order_currency . ", order_version: " . $order_version );

或者有没有办法循环遍历为每条信息的 key:value 放置一个数组?

最佳答案

这取决于您是否要自定义按键以及所需的输出是什么:

  1. JSON ENCODE:保留所有数据原样:

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );
    
    // Get the meta data in an unprotected array
    $order_data = $order->get_data();
    
    // Encoding in json
    $json_order_data = json_encode($order_data);
    
  2. JSON ENCODE:自定义数据,仅保留一些数据并更改数组键:

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );
    
    $order_data = []; // Initializing
    
    // Set the necessary data in an array with custom keys 
    // using WC_Abstract_Order and WC_Order methods
    $order_data['order_id']       = $order->get_id();
    $order_data['parrent_id']     = $order->get_parent_id();
    $order_data['status']         = $order->get_status();
    $order_data['order_currency'] = $order->get_currency();
    $order_data['order_version']  = $order->get_version();
    $order_data['order_payment_method']       = $order->get_payment_method();
    $order_data['order_payment_method_title'] = $order->payment_method_title();
    ## And so on…
    
    // Encoding in json
    $json_order_data = json_encode($order_data);
    
  3. 格式化字符串:自定义数据并仅保留一些数据:

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );
    
    $order_data = []; // Initializing
    
    // Set the necessary data in an array using WC_Abstract_Order and WC_Order methods
    $order_data[] ='order_id: ' . $order->get_id();
    $order_data[] ='parrent_id: ' . $order->get_parent_id();
    $order_data[] ='status: ' . $order->get_status();
    $order_data[] ='order_currency: ' . $order->get_currency();
    $order_data[] ='order_version: ' .  $order->get_version();
    $order_data[] ='order_payment_method: ' .  $order->get_payment_method();
    $order_data[] ='order_payment_method_title: ' .  $order->payment_method_title();
    ## And so on…
    
    // Convert to coma separated string
    $str_order_data = implode( ', ' . $order_data );
    

相关:How to get WooCommerce order details

关于php - 获取数组中的订单数据以在 Woocommerce 中对其进行 JSON 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996985/

相关文章:

python - 如何使用python将数组中的字符串切片到另一个数组中

javascript - 在 LODASH 中,断言对象或数组中存在键的最佳方法是什么?

c# - 使用 System.Text.Json 使用动态键查询或反序列化 json

php - 如何使用PHP中的严格报告管理错误?

javascript - 如何使选择的语言下拉列表也保留在下一页?

javascript - Jquery 空结果

c++ - 你如何破译指针+数组的复杂声明?

javascript - 如何使用动态键格式化 json?

java - java中读取文件的函数

php - 如何重写根目录中的目录