gpt4 book ai didi

php - 基于两个数组数据选择查询时如何避免循环

转载 作者:行者123 更新时间:2023-11-29 05:03:42 24 4
gpt4 key购买 nike

我有如下表格。

id  supplier_id item_id minimum_order_qty   
1 6 1 500
2 4 1 300
3 2 2 200
4 3 2 100
5 4 3 250
6 5 5 100
7 7 6 1000
8 8 6 600
9 9 7 700
10 1 7 500
11 7 8 1000
12 9 9 700
13 2 10 500
14 9 10 600

每个item_id 可以有多个供应商(supplier_id)。

我有两个数组 item_id 数组和 supplier_id 数组。

item_id 数组:

Array
(
[0] => 9
[1] => 10
[2] => 11
[3] => 12
[4] => 13
[5] => 14
[6] => 15
[7] => 16
[8] => 17
[9] => 18
[10] => 19
[11] => 20
[12] => 21
[13] => 22
[14] => 23
[15] => 24
)

supplier_id 数组:

Array
(
[0] => 9
[1] => 2
[2] => 5
[3] => 1
[4] => 1
[5] => 9
[6] => 6
[7] => 4
[8] => 6
[9] => 9
[10] => 1
[11] => 9
[12] => 9
[13] => 4
[14] => 5
[15] => 9
)

两个数组长度相同。我想根据这两个数组从 supplier_item 中选择 minimum_order_qty。通常,我必须像这样选择内部循环:

$item_count = count($item);
$sup_count = count($supp_id);
for($i=0; $i<$item_count; $i++) {
$itm_id = $item[$i];
$s_id = $supp_id[$i];
$sql = "select * from supplier_item where item_id=$itm_id and supplier_id=$s_id";
$result[] = $this->query($sql);
}

但是,上面的代码会多次运行查询。我不想这样做。那么,有没有其他方法可以通过单个查询来选择数据?

最佳答案

你可以在一个查询中完成

$item_count = count($item);
$sup_count = count($supp_id);
$predicates = [];
for($i=0; $i<$item_count; $i++) {
$itm_id = $item[$i];
$s_id = $supp_id[$i];
$predicates[] = "(item_id=$itm_id and supplier_id=$s_id)";
}
$sql = "select * from supplier_item where " . implode(' OR ', $predicates);
$result = $this->query($sql);

关于php - 基于两个数组数据选择查询时如何避免循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com