On Fri, 23 Jan 2004, NIPP, SCOTT V (SBCSI) wrote:

>       I am trying to populate an array from a MySQL database.  I think I
> have the code correct to populate the array, but I need to somehow sort the
> array eliminating duplicate values.  I think I can loop through the array
> doing a comparison and building a new array by discarding the value if it is
> a duplicate, but I was not sure if there was a more efficient way of doing
> this.  I am already looping through the database query results, and I am
> just thinking about efficiency here.

First, you should see if you can optimize your SQL query to do the work 
for you, a la SELECT DISTINCT and/or ORDER BY.

Beyond that, try using an associative array. It cannot contain duplicate 
keys, and it can be sorted by key. For example, assume your data is:

$dbdata = array(
    "userid"   => 10,
    "display"  => "Smith, Joan",
    "username" => "jsmith",
    "location" => "Kalamazoo" );

$keydata = $dbdata['display'] . $dbdata['userid']; // key format
$storage[$keydata] = $dbdata;                      // store data

ksort($storage);                                   // sort array by key
foreach($storage as $v) { print_r($v); }           // loop sorted values

In the case that you might have two Joan Smiths, the key is the display
name and the userid concatenated. It can be anything that sorts well...

> <?php
>   do {
>       $entry = $list['id_sys'];
>       $id = split('-', $list['id_sys'], 1);
>       $sbcuid = $id[0];
>       $users[] = '$sbcuid';  
>   } while ($list = mysql_fetch_assoc($result));
> ?>

Some problems here... you might try while() { } instead of do { } while()
which makes your loop run once without $list being set. Also, list is a
reserved word, so even if it works as a variable $list, don't do that...
Further, you mean $users[] = $sbcuid; not $users[] = '$sbcuid';

Kelly Hallman
// Ultrafancy

PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to