我有一个电子商务网站,我将其设置为将国家/地区划分为不同的区域以支付运费。
我有 8 个区域,这些都是国家代码数组,数组中不能有重复项,或者多个数组中不能存在项目。
然后我想计算给定国家的运费。所以我基本上想找出这个国家在哪个地区。
我目前所做的是通过物品供应商查询我的运输区域以获取所有数组,然后if(in_array())对每个数组执行如下操作:
$params = [$supplier_id];
$sql = "SELECT * FROM shipping_zones WHERE supplier_id=?";
$stmt = DB::run($sql,$params);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$z1 = unserialize($row['zone1']);
$z2 = unserialize($row['zone2']);
$z3 = unserialize($row['zone3']);
$z4 = unserialize($row['zone4']);
$z5 = unserialize($row['zone5']);
$z6 = unserialize($row['zone6']);
$z7 = unserialize($row['zone7']);
$z8 = unserialize($row['zone8']);
}
if(in_array($country_code,$z1)){
$shipping_zone = 'z1';
}else if(in_array($country_code,$z2)){
$shipping_zone = 'z2';
}else if(in_array($country_code,$z3)){
$shipping_zone = 'z3';
}else if(in_array($country_code,$z4)){
$shipping_zone = 'z4';
}else if(in_array($country_code,$z5)){
$shipping_zone = 'z5';
}else if(in_array($country_code,$z6)){
$shipping_zone = 'z6';
}else if(in_array($country_code,$z7)){
$shipping_zone = 'z7';
}else if(in_array($country_code,$z8)){
$shipping_zone = 'z8';
}
必须有更好的方法来做到这一点,我认为在初始 SQL 查询中这样做可能更容易,但实际的数组在数据库中被序列化。