嵌套foreach,如何提高效率

时间:2019-03-11 19:58:05

标签: php performance for-loop foreach

首先,你好 我目前正在制作一个报表系统,该报表系统确实包含6个字段(6个选择,所有字段均为倍数)。

我将它们的输入作为数组接收,并且我需要处理每个字段的每个值

例如,让我们给字段A,B和C。

字段A的值为[1、2、3]。

字段B的值为[4,5,6]。

字段C的值为[7,8,9]。

我需要使代码运行并像这样返回

1-4-7
1-4-8
1-4-9
1-5-7
1-5-8
1-5-9
( And so on )

实际上,我是通过嵌套几个foreach来做到这一点的,但是我认为这样做效率不高(我花了将近30到35秒来执行循环(不考虑我在其中执行的MySQL查询)

是否存在更有效的方法?

编辑

根据评论的要求,我得到了一个例子

// I'm ignoring SQL Injection since it is a example only
$status = explode("-", $_POST['status']);
$type = explode("-", $_POST['type']);
$store = explode("-", $_POST['store']);

foreach($status as $statusKey => $statusID) {
    foreach($type as $typeKey => $typeID) {
        foreach($store as $storeKey => $storeID) {
            echo $statusID." - ".$typeID." - ".$storeID.PHP_EOL;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要做的是在循环中准备一条语句,然后在循环外执行它,这样您将获得以下内容:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

更多内容:https://dev.mysql.com/doc/refman/8.0/en/insert.html

在没有插入的情况下,此代码应该是非常快的,因为这是非常基本的操作。