php - 使用带有多维数组的 PHP 将 MySQL 结果转换为 XML 格式
问题描述
我试图让我的 XML 格式是这样的:
但是我的代码现在不会循环访问“order_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));
}
}
}
解决方案
您继续覆盖加载循环中的最后一行。将其更改为...
$line = [];
foreach($result_line->result() as $row_line);
{
$line[] = array(
'guid' => $row_line->guid,
'itemcode' => $row_line->itemcode,
);
}
所以每一行都是用$line[]
.
推荐阅读
- javascript - 从js调用函数但它不起作用
- list - 如何在 Netlogo 中合并两个列表而不会得到额外的括号?
- pandas - 如何在 dask 中并行化 groupby()?
- python - 使用 Python virtualenv --system-site-packages 安装本地包
- python - 为什么 print 语句的值实际上没有打印。. . 没有出现语法错误代码
- swift - 为什么我的 lineString 没有在 geoSwift 中转换为 mapShape - (只发生在一个特定的搜索中),可能是外部库错误?
- swift - 使用 Firebase/Firestore 具有重新排序功能的任务列表
- exception - 我可以控制 gcc 是否在函数主体内部/外部放置异常抛出代码?
- reactjs - 使用反应导航时如何解决滚动和布局问题?
- servicestack - 在 ServiceStack 中使用 ResponseDTO 进行自动查询