You need to enable JavaScript to run this app. 如何遍历PHP多维数组实现发票打印并插入数据库查询结果
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历PHP多维数组实现发票打印并插入数据库查询结果

操作方法

1. 数据库数据插入多维数组

你可以直接以发票ID为键,把查询到的该发票下的商品列表赋值给对应键值即可,示例代码如下:

// 初始化存储发票的多维数组
$INV_PRINT = [];
// 假设此处为用户提交的需要打印的发票ID列表
$selected_invoices = ['INV101', 'INV201'];
// 可根据需求从数据库查询对应发票的日期,此处示例统一用当前日期
$invoice_date = date('d/m/Y');

// 数据库连接示例($conn为你已创建的数据库连接实例)
foreach ($selected_invoices as $inv_id) {
    // 查询当前发票ID对应的所有商品数据
    $sql = "SELECT Prod_Code, Qty FROM 你的商品关联表 WHERE 发票ID字段 = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('s', $inv_id);
    $stmt->execute();
    // 获取查询到的商品二维数组
    $products = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
    
    // 直接赋值到发票数组对应键位
    $INV_PRINT[$inv_id] = $products;
}

如果你需要为每个发票单独存储日期等信息,可以调整数组结构为:

$INV_PRINT[$inv_id] = [
    'date' => '21/02/2020', // 从数据库查询的对应发票日期
    'products' => $products
];

2. 遍历数组输出目标发票格式

纯文本输出示例

foreach ($INV_PRINT as $invoice_no => $product_list) {
    echo "===================\n";
    echo "Invoice No : {$invoice_no}\n";
    echo "Date : {$invoice_date}\n\n";
    echo "Product        Qty\n";
    foreach ($product_list as $item) {
        // str_pad用于补全空格保证列对齐
        echo str_pad($item['Prod_Code'], 15) . $item['Qty'] . "\n";
    }
    echo "===================\n";
}

如果是调整了带日期的数组结构,遍历写法调整为:

foreach ($INV_PRINT as $invoice_no => $inv_info) {
    echo "===================\n";
    echo "Invoice No : {$invoice_no}\n";
    echo "Date : {$inv_info['date']}\n\n";
    echo "Product        Qty\n";
    foreach ($inv_info['products'] as $item) {
        echo str_pad($item['Prod_Code'], 15) . $item['Qty'] . "\n";
    }
    echo "===================\n";
}

网页打印适用的HTML输出示例

用表格排版更适合浏览器打印,对齐更精准:

foreach ($INV_PRINT as $invoice_no => $product_list) {
    echo '<div style="margin:20px 0;border:1px solid #000;padding:15px;page-break-after:always;">';
    echo "<p>Invoice No : {$invoice_no}</p>";
    echo "<p>Date : {$invoice_date}</p>";
    echo '<table width="100%" style="border-collapse:collapse;margin-top:15px;">';
    echo '<tr><th width="80%">Product</th><th width="20%">Qty</th></tr>';
    foreach ($product_list as $item) {
        echo "<tr><td>{$item['Prod_Code']}</td><td>{$item['Qty']}</td></tr>";
    }
    echo '</table></div>';
}

内容的提问来源于stack exchange,提问作者Hai Yaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 11:15:03