PHP搜索数组使用通配符?

时间:2012-04-28 23:15:20

标签: php arrays search

假设我有以下数组:

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只有在我知道给定数组中key的整个值时才有效。这不是我的情况。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

循环遍历所有项目,并根据前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;
    }
}

答案 2 :(得分:1)

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

<?php

$fixed_array = array();

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

    if ....
}

答案 3 :(得分:0)

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

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

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

您可以通过添加Perfect PHP Guide

找到解决方案