On Mon, January 29, 2007 11:20 am, Ken Dozier wrote: > Does in_array() use a search algorithm (i.e., binary search), or does > it > check sequentially each element in the array? Since there is no guarantee that the elements are in any particular order, it almost has to be sequential... > I am using in_array() within a while{} loop to check query results > against > an access-list array to produce a third array containing items that > successfully passed the comparison test. Because the two starting > arrays in > the worst-case scenario can have 8,000 items each, the loop is timing > out. > Advice or alternative methods are appreciated. > > Code Sample: > <?php > function check_results($results, $access_list) > { # Check for $results in array $access_list and > # add matches to array $match. > > $result = false; > $match = array(); > > while ($r = mysql_fetch_row($results)) > { if ( in_array($r[0], $access_list) ) > { $match[] = $r; } > } > > if ( count($match) > 0 ) { $result = $match; } > > return $result; > } > ?> Ideal #1: Figure out how to write an SQL query to find what's in the DB, and don't do any search in PHP at all. Ideal #2: Put the values in as keys, and use http://php.net/isset This will "hash" the values and have an O(1) lookup, I think. Only works if you know the uniqueness of the values to be searched, or don't care about duplicates. -- Some people have a "gift" link here. Know what I want? I want you to buy a CD from some starving artist. http://cdbaby.com/browse/from/lynch Yeah, I get a buck. So? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php