dscdttg4389 2017-02-15 11:20
浏览 37
已采纳

检查邮政编码是否在多个阵列中?

I have 3 different areas, MyArea1, MyArea2, MyArea3. Each of these have an array of postcodes:

$myArea1=array("AB1","AC2","AD1");
$myArea2=array("BC1","BC2","BC3");
$myArea3=array("CD1","CD2","CD3");

The postcodes I need to check would be like the following "BC2 4YZ".

The following won't work as it checks for a complete match:

if (in_array($row['postcode'], $myArea1)) { $Area = 'Area 1'; }
else if (in_array($row['postcode'], $myArea2)) { $Area = 'Area 2'; }    
else if (in_array($row['postcode'], $myArea3)) { $Area = 'Area 3'; }
else { $Area = 'No Match'; }

I've got the following that works:

foreach ($myArea1 as $myArea1pc) {
    if (strpos($row['postcode'],$myArea1pc) !== false) {
        $Area = 'Area 1';                   
    }
}

However is there a way of looping this for all of my arrays?

Edit: There may sometimes be postcodes such as "BC24" in my arrays.

  • 写回答

1条回答 默认 最新

  • dsd57259 2017-02-15 11:42
    关注

    I would try to use in_array for this.

    $input = $row['postcode'];
    
    $areas = array(
        'Area 1' => array("AB1","AC2","AD1"),
        'Area 2' => array("BC1","BC2","BC3"),
        'Area 3' => array("CD1","CD2","CD3"),
    );
    
    // Take out the first 3 letter:
    $part = substr(trim(str_replace(' ', '', $input)), 0, -3);
    
    $Area = 'No match';
    // Find which "area" array contains it
    foreach ($areas as $k => $v) {
        if (in_array($part, $v)) {
            $Area = $k;
            break;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c