[SOLVED] pbm with array_unique

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
rcmn
Forum Newbie
Posts: 21
Joined: Tue Jul 06, 2004 10:35 am

[SOLVED] pbm with array_unique

Post by rcmn »

i want use array_unique but something is missing; the duplicates are still there.

Code: Select all

<?
$handle = fopen("wdt_list1.csv", "r");
while (!feof($handle)) &#123;
   $node_id = fscanf($handle, "%&#1111;W0-9]   %&#1111;A-Za-z]\r\n"); //*find node id

            if ($node_id) &#123;
     list ($serv_id) = $node_id;
                $serv_id =  substr($serv_id, 2, -2); &#123;    //*format to xxxx serv. format

                $serv_tab = array($serv_id); //*creat tab
            $serv_unk = array_unique ($serv_tab); //* del duplicate

         print_r ($serv_unk);
   &#125;
   &#125;
   $serv_id=NULL;
&#125;
fclose($handle);


?>

i tried

Code: Select all

$serv_unk = array_unique ($serv_tab); //* del duplicate

         print_r ($serv_unk);
after

Code: Select all

fclose($handle);
but it gave me the last value of the array...
Last edited by rcmn on Tue Aug 03, 2004 12:26 pm, edited 1 time in total.
User avatar
Weirdan
Moderator
Posts: 5978
Joined: Mon Nov 03, 2003 6:13 pm
Location: Odessa, Ukraine

Post by Weirdan »

can you show us the contents of wdt_list1.csv?

$serv_tab has only one element on each iteration, no wonder it remains the same after array_unique...
perhaps you want to gather all $serv_id's and than run array_unique on that collection, do you?
rcmn
Forum Newbie
Posts: 21
Joined: Tue Jul 06, 2004 10:35 am

Post by rcmn »

the out put of that page :

Code: Select all

<?
$handle = fopen("wdt_list1.csv", "r");
while (!feof($handle)) &#123;
   $node_id = fscanf($handle, "%&#1111;W0-9]	%&#1111;A-Za-z]\r\n"); //*find node id

            if ($node_id) &#123;
     list ($serv_id) = $node_id;
   $serv_id =  substr($serv_id, 2, -2); &#123;    //*format to xxxx serv. format
            if (trim($serv_id) != "")      //*supp space

                     echo "".$serv_id."<br>";
	&#125;
   &#125;
   $serv_id=NULL;
&#125;
fclose($handle);
?>

is that
9441
9441
9441
9441
9441
9441
9441
9431
9421
9421
9421
9421
9421
9421
9421
9411
9411
9322
8671
8661
8351
8301
8301
8281
7951
7571
7211
7101
7101
7091
6892
6892
6871
6662
6311
6252
5871
5871
5871
5871
5861
5831
5831
5641
5441
5363
5362
5362
5356
5344
5342
5335
5334
5328
5307
5306
4871
4821
4741
4741
4741
4731
4681
4425
4425
4425
4425
4414
4414
4414
4414
4414
4414
4414
4414
4414
4414
4414
4414
4411
4411
4362
4362
4362
4350
4350
4350

4317
etc........and more
User avatar
Weirdan
Moderator
Posts: 5978
Joined: Mon Nov 03, 2003 6:13 pm
Location: Odessa, Ukraine

Post by Weirdan »

hmm.... maybe something like this:

Code: Select all

$handle = fopen("wdt_list1.csv", "r"); 
while (!feof($handle)) { 
   $node_id = fscanf($handle, "%[W0-9]   %[A-Za-z]\r\n"); //*find node id 
   if ($node_id) { 
     list ($serv_id) = $node_id; 
     $serv_id =  substr($serv_id, 2, -2);    //*format to xxxx serv. format 
     $serv_tab[] = array($serv_id); //*creat tab 
   } 
   $serv_id=NULL; 
} 
fclose($handle); 

$serv_unk = array_unique ($serv_tab); //* del duplicate 
print_r ($serv_unk);
rcmn
Forum Newbie
Posts: 21
Joined: Tue Jul 06, 2004 10:35 am

Post by rcmn »

i get

Code: Select all

Array ( &#1111;0] => Array ( &#1111;0] => ) )
rcmn
Forum Newbie
Posts: 21
Joined: Tue Jul 06, 2004 10:35 am

Post by rcmn »

i solved it ,replacing $serv_tab[] = array($serv_id) by $serv_tab[] = $serv_id
Post Reply