首先,你好 我目前正在制作一个报表系统,该报表系统确实包含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;
}
}
}
答案 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
在没有插入的情况下,此代码应该是非常快的,因为这是非常基本的操作。