假设我有以下数组:
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的整个值时才有效。这不是我的情况。
答案 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
找到解决方案