在php中比较和过滤数组中的值

时间:2011-06-09 12:35:40

标签: php arrays sorting

我有一个包含电话号码的csv文件。

大约有15个区号为+44的数字和20个以+64开头的数字(大约有40个区号)。我需要回复每组中的一个数字并丢弃遗骸。

我使用fgetcsv()加载了所有内容。但我找不到一种方法来做过滤部分。有些人可以请教我如何在php中解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

$numbers = array('+1134124', '+11412421', '+41125125', …);

$filtered = array_reduce($numbers, function ($f, $num) {
    return $f + array(substr($num, 0, 3) => $num);
}, array());

答案 1 :(得分:1)

尝试使用csv文件内容替换$ numbers。

$numbers = array('+1134124', '+11412421', '+41125125','+41125124','+41125144','+41155124','+44125124','+44155124');                          

$final = array();

$received = array();

foreach($numbers as $snKey => $snValue )
{

    $snCode = substr($snValue,0,3);

    if(in_array($snCode,$received))
        continue;
    else
    {
        $received[] = $snCode;
        $final[] = $snValue;
    }
}
print_r($final);

答案 2 :(得分:0)

您可以在从文件中读取行时过滤它们

像:

 $array = array(); 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $prefix = substr($data, 0, 3);
            if(in_array($prefix, $array))
               continue;
            else{
               $array[] = prefix;
               # save the line or echo
            } 

     }