douyi7283 2019-06-09 11:02
浏览 48

强制将数组添加到集成到插件的PHP中的JSON单个元素中

This question is based on the existing post at Force to add array into single element of JSON in PHP

Now i need to add some custom function into 3rd party WordPress export plugin to make my desired JSON output. Since i have some limit knowledge on the PHP and array, so would like some help from your guys

Two issue still need to fix for this code:

1) order_item for postid=32081 not able to show all items(total 3 order item), currently only last one is show e.g. ugs=A0003

2)Need to include array(or square bracket) to all the parameter under order_item

existing function to export json

function woo_ce_export_dataset_override_order( $output = null, $export_type = null) {

    global $export;
    $orders = woo_ce_get_orders( 'order', $export->args );

    if( !empty( $orders ) ) {
        if( !empty( $export->fields ) ) {

            $export->total_columns = $size = count( $export->columns );

            $output = [
                "transaction_date" => date('Ymd'),
                "neworders" => []    
            ];

            if( !empty( $export->fields ) ) {
                foreach( $orders as $order ) {

                    $args = $export->args;

                    $order = woo_ce_get_order_data( $order, 'order', $args, array_keys( $export->fields ) );

                    foreach( array_keys( $export->fields ) as $key => $field ) {
                        if( isset( $order->$field ) && isset( $export->columns[$key] ) ) {

                            $post[ $export->columns[$key] ] = $order->$field;
                        }
                    }

                    if( !empty( $order->order_items ) ) {
                        foreach( $order->order_items as $order_item ) {
                            foreach( array_keys( $export->fields ) as $key => $field ) {
                                if( isset( $order_item->$field ) && isset( $export->columns[$key] ) ) {

                                    $post['order_item'][ $export->columns[$key] ] = $order_item->$field;
                                }
                            }
                        }
                    }
                    $output['neworders'][] = $post;
                }
            }
        }
    }
    return array($output);
} 

what i get from output

[
    {
        "transaction_date": "20190609",
        "neworders": [
            {
                "postid": 32081,
                "label": "22615",
                "address": "19 RUE",
                "postcode": "27450",
                "order_item": {
                    "ugs": "A0003",
                    "qty": "6"
                }
            },
            {
                "postid": 32082,
                "label": "22617",
                "address": "2 impas",
                "postcode": "12300",
                "order_item": {
                    "ugs": "B0002",
                    "qty": "1"
                }
            }
        ]
    }
]

what i need

[
    {
        "transaction_date": "20190609",
        "neworders": [
            {
                "postid": 32081,
                "label": "22615",
                "address": "19 RUE",
                "postcode": "27450",
                "order_item": [ 
                    {
                        "ugs": "A0001",
                        "qty": "3"
                    },
                    {
                        "ugs": "A0002",
                        "qty": "1"
                    },
                    {
                        "ugs": "A0003",
                        "qty": "6"
                    }
               ]
            },
            {
                "postid": 32082,
                "label": "22617",
                "address": "2 impas",
                "postcode": "12300",
                "order_item": [
                   {
                      "ugs": "B0001",
                      "qty": "1"
                  }
                ]
            }
        ]
    }
]
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 R语言Rstudio突然无法启动
    • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
    • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
    • ¥15 用windows做服务的同志有吗
    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值