我从发票中提取一系列订单项:
private function lineItemsFromInvoice($xeroInvoice) : array
{
$lineItems = array();
foreach($xeroInvoice[XeroKeys::_XERO_INVOICE_KEY_LINE_ITEMS] as $value) {
array_push($lineItems, $value);
}
return $lineItems;
}
在此之后,它们将通过以下方式插入数据库:
foreach($this->lineItems() as $invoiceLineItem) {
...some SQL INSERT STATEMENT
}
我需要能够查询订单项并按照插入顺序保留它们。此外,可以更新发票本身,并在数组中的任意位置插入行项目。这个项目在查询中排序的顺序需要反映这个。
我可以使用时间戳ORDER BY
并确保每次运行INSERT
语句时每个订单项都会更新。
我还可以在$index = 0
函数中使用$index++
和lineItemsFromInvoice()
,并在数组中添加Key => Value
对,并将其作为每个{{1}的一部分插入但这似乎很混乱。我不知道LineItem
与:
array()
这些解决方案是典型的还是可行的?在生产环境中通常会看到什么?
答案 0 :(得分:2)
根据Matt S上面给出的建议,这是我将要实施的实施。
private function lineItemsFromInvoice($xeroInvoice) : array
{
$lineItems = array();
$index = 0;
foreach($xeroInvoice[XeroKeys::_XERO_INVOICE_KEY_LINE_ITEMS] as $value) {
$value["index"] = $index;
array_push($lineItems, $value);
$index++;
}
return $lineItems;
}
现在的问题是,我可以保证php array()会在最后添加["index"]
个密钥吗?