2

假设我有以下数组包含:

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/表示电话(固定)号码
  • 以 开头的 Valeswww.代表网站

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

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

4

4 回答 4

2

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

于 2012-04-28T23:18:50.233 回答
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;
    }
}
于 2012-04-28T23:20:42.523 回答
1

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

<?php

$fixed_array = array();

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

    if ....
}
于 2012-04-28T23:20:57.223 回答
0

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

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

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

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

于 2012-04-28T23:30:48.993 回答