doushi1929 2018-06-07 18:45
浏览 51

使用具有多维数组的PHP将MySQL结果转换为XML格式

I am trying to get my XML format be like this:

xml format I want

but my code now does not loop for the 'order_line' array and will return like this:

false XML format

below are sample of my code I did:

$result = $this->db->query("SELECT * FROM `grn_order` a");

    foreach($result->result() as $row )
    {
        $result_line = $this->db->query("SELECT * FROM `grn_order_line` a where a.order_no = '$row->order_no'");
        foreach($result_line->result() as $row_line);
        {
            $line = array(
                'guid' => $row_line->guid,
                'itemcode' => $row_line->itemcode,
            );
        }

        $my_array[] = array(
            'order_no' => $row->order_no,
            'loc_code' => $row->loc_code,
            'trans_code' => $row->trans_code,
            'po_no' => $row->po_no,
            'order_line' => $line
        );
    } $xml = new SimpleXMLElement('<orders/>');

    // function callback
    $data = $this->array2XML($xml, $my_array);
    print $xml->asXML();

function array2XML($obj, $array)
{
    foreach ($array as $key => $value)
    {
        if(is_numeric($key))

        $key = 'order';

        if (is_array($value))
        {
            $node = $obj->addChild($key);
            $this->array2XML($node, $value);
        }
        else
        {
            $obj->addChild($key, htmlspecialchars($value));
        }
    }
}
  • 写回答

1条回答 默认 最新

  • doudinghan8319 2018-06-07 18:52
    关注

    You keep on overwriting the last line in your load loop. Change it to...

    $line = [];
    foreach($result_line->result() as $row_line);
    {
        $line[] = array(
            'guid' => $row_line->guid,
            'itemcode' => $row_line->itemcode,
        );
    }
    

    So each line is added using $line[].

    评论

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大