I have worked for some time on developing a method for this issue. The
problem has always been the flexibility of the method to work in any
situation.

I had initially thought this might be my solution.

Function multi_dim_unique($array='')

{

                For ($a=0;$b=count($array);$a<$b;$a++) {

                                For ($c=0,$d=count($array[$a]);$c<$d;$c++) {

                                $tmp = $array[$a][$c];

                                               If (!isset
($record_array[$tmp])) {

                                                $record_array[$tmp] = $c;

                                                }

                                }

                }

                Foreach ($record_array as $key=>$value) {

                                $array[$value][] = $key;

                }

Return $array;

}

While this concept work perfect for multi dimensional arrays like.

$array = (0=>array(0=>12345,1=>67890),1=>array(0=>12345,1=>67890,2=>11111));

 

I find myself constantly needing to dig deeper and unique at other positions
of the array but still have the flexibility.

$array = array([0] = > array(['Company'] => array( [0] = > ABC,[1] =>
CBS,[2] => NBC), [Owners] => array ( [0] => John,[1] => Mark,[2] => John));

 

In a desire to find the unique Owner names from the array above. The initial
method is not accommodating for this array and will return the entire array
as presented.

My new thoughts are to pass a parameter to the method for the position I
want unique.

 

$position = 'Owners';

multi_dim_unique($array,$postion);

 

Here lies the problem finding the position match no matter how many
dimensions there are.

My question is has anyone tackled this issue and may have some suggestions
as to how I may reconstruct the method to be a bit more accommodating to
situations like this. 

 

 

 

Richard L. Buskirk

 

Reply via email to