使用分层值在Array或MySQL条目中搜索

时间:2017-09-29 16:39:04

标签: php mysql arrays search

我有一个包含5000个本地区号代码的数据库,用于将区号与电话号码字符串分开。区号可以是其他区号的一部分。例如

0212 Solingen

02129哈恩

索林根区号是哈恩区号的一部分。

  1. 问题:我应该将所有条目存储在数组中还是应该直接在SQL中搜索直到最终结果?
  2. 问题:如何使用最找到的数字获取entrie,而区域代码可以在数组/ SQL中加倍
  3. 我使用的代码是

    结果是" 03491 52023"这是错的;它应该是" 034915 2023"

    <?php
    $area_codes = array( '0350', '034', '034915', '03491', '0348', '0349', '03491', '034916', '034917',);
    $phone = '0349152023';
    
    foreach ($area_codes as $code) {
      if (substr($phone, 0, strlen($code)) == $code) {
        $phone_string = substr($phone, 0, strlen($code))." ".substr($phone, strlen($code));
      }
    }
    
    if (!empty($phone_string)) {
        echo $phone_string;
    }
    
    else {
        echo "No AreaCode found.";
    }
    ?>
    

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你只需要对数组进行排序,你就可以获得所需的输出:

工作演示https://eval.in/871329

$area_codes = array( '0350', '034', '034915', '03491', '0348', '0349', '03491', '034916', '034917',);
sort($area_codes);

$phone = '0349152023';

foreach ($area_codes as $code) {
    $subString = substr($phone, 0, strlen($code)); // stored in var so no need to re-code for substr
    if ($subString == $code) {
        $phone_string = $subString." ".substr($phone, strlen($code));
    }
}

if (!empty($phone_string)) {
    echo $phone_string;
}

else {
    echo "No AreaCode found.";
}

输出:

034915 2023