PHP - 使用n#39;数组格式化查询结果,如n#39;图案

时间:2014-09-25 15:20:21

标签: php formatting

我构建了一种机制,将查询结果格式化为具有特定模式的数组。 例如:

<?php

// Pattern
$aPattern = array(
    'cust_id' => array(
        '@detail' => array(
            '@name' => '%{forename} {name}',
            '@company' => 'company'
        ),
        '@orders_total' => 
            array('article' => 'qty')
    )
);

// Query
$sQuery = "SELECT `cust`.*, `order`.`article`, SUM(`quantity`) AS qty
           FROM `cust` LEFT JOIN `order` ON `cust`.`id` = `order`.`cust_id`
           GROUP BY `cust`.`id`, `order`.`article`";

// Run query and set fetch mode
$oStatement = Data::query($sQuery)->setFetchPattern($aPattern);

// Fetch results
$aRes = $oStatement->fetchAll();

它工作正常,但在格式化大量行(&gt; 5000)时需要花费太多时间。 我一直在寻找可以更有效地完成工作但没有成功的现有解决方案。 在发布代码以询问是否有人可以帮助我改进它之前,有人知道是否有PHP类或类似已经执行此类工作的类吗?

提前致谢,对任何StackOverflow误用表示抱歉

1 个答案:

答案 0 :(得分:0)

最后我发现了问题。我正在为结果集中找到的每一行运行fetch函数,每次我将结果合并到全局结果数组时,显然合并步骤花费了太多时间(resursive函数)。我只修改了fetch函数,以便在递归函数中完成全局结果数组而无需合并。现在它正在快速工作:)