使用带有多维数组的php将mysql结果转换为xml格式

yeotifhr  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(356)

我试图让我的xml格式如下:

但我的代码现在不会循环使用'order\u line'数组,返回结果如下:

下面是我的代码示例:

$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));
        }
    }
}
jfgube3f

jfgube3f1#

继续覆盖加载循环中的最后一行。把它改成。。。

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

所以每一行都是用 $line[] .

相关问题