【问题标题】:PHP search array using wildcard?使用通配符的PHP搜索数组?
【发布时间】:2012-04-28 23:15:19
【问题描述】:

假设我有以下数组包含:

Array (
     [0] => 099/3274-6974
     [1] => 099/12-365898
     [2] => 001/323-9139
     [3] => 002/3274-6974
     [4] => 000/3623-8888
     [5] => 001/323-9139
     [6] => www.somesite.com
)

地点:

  • 000/, 002/ and 001/ 开头的值代表手机号码
  • 099/ 开头的值代表电话(固定)号码
  • www. 开头的 Vales 代表网站

我需要将给定数组转换为 3 个新数组,每个数组都包含正确的信息,例如 arrayTelephone、arrayMobile、arraySite。

函数 in_array 仅在我知道给定数组中键的整个值时才有效,这不是我的情况。

【问题讨论】:

    标签: php arrays search


    【解决方案1】:

    创建三个空数组,使用foreach 循环遍历源数组,检查每个值(正则表达式对此很好)并将项目添加到各自的数组中。

    【讨论】:

    • 请不要为此推荐正则表达式,给大佬学习的机会。
    【解决方案2】:

    遍历所有项目并根据前 4 个字符将它们排序到适当的数组中。

    $arrayTelephone = array();
    $arrayMobile = array();
    $arraySite = array();
    
    foreach($data as $item) {
        switch(substr($item, 0, 4)) {
            case '000/':
            case '001/':
            case '002/':
                $arrayMobile[] = $item;
                break;
            case '099/':
                $arrayTelephone[] = $item;
                break;
            case 'www.':
                $arraySite[] = $item;
                break;
        }
    }
    

    【讨论】:

    • @MattiVirkkunen:带有描述的代码示例实际上非常适合学习。不过,我想你有权投票。
    【解决方案3】:

    您可以遍历数组并根据您的条件将值推送到正确的新数组。示例:

    <?php
    
    $fixed_array = array();
    
    foreach ($data_array as $data) {
        if (strpos($data, '099') === 0) {
            $fixed_array[] = $data;
        }
    
        if ....
    }
    

    【讨论】:

      【解决方案4】:

      是的,我实际上是用 preg_match 编写了完整的代码,但在阅读了一些 cmets 之后,我接受它更好地展示方式。

      您将创建三个不同的数组,名为 arrayTelephone、arrayMobile、arraySite。

      您将使用 foreach 或 for 循环搜索您的第一个数组。将您当前的循环值与您的条件进行比较,然后将值推送到方便的新数组之一(arrayTelephone、arrayMobile、arraySite),然后使用“continue”语句继续您的循环。

      您可以通过添加Perfect PHP Guide来找到解决方案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多