сравнивать и фильтровать значения в массиве в php - PullRequest
0 голосов
/ 09 июня 2011

У меня есть CSV-файл, содержащий номера телефонов.

Существует около 15 номеров с кодом города +44 и 20 номеров, начинающихся с +64 (около 40 кодов города). мне нужно повторить одно число каждого набора и бросить остатки.

Я загрузил весь контент, используя fgetcsv (). но я не могу найти способ сделать часть фильтрации. Может кто-нибудь, пожалуйста, дайте мне идею, как разобраться в этом в php?

Ответы [ 3 ]

1 голос
/ 09 июня 2011

Попробуйте заменить $ numbers на содержимое файла csv.

$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);
1 голос
/ 09 июня 2011
$numbers = array('+1134124', '+11412421', '+41125125', …);

$filtered = array_reduce($numbers, function ($f, $num) {
    return $f + array(substr($num, 0, 3) => $num);
}, array());
0 голосов
/ 09 июня 2011

вы можете отфильтровать их при чтении строки из файла

, например:

 $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
            } 

     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...