Re: Array sorting question...

From: Date: Fri, 23 Jan 2004 20:49:03 +0000
Subject: Re: Array sorting question...
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-32606@lists.php.net to get a copy of this message
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

« previous php.db (#32606) next »