This function searches for the closest element in an array by key value, and returns the key/value pair, or false if not found.<?phpfunction nearest($array, $value, $exact=false) { $next = false; $prev = false; $return = false; if(!isset($array[$value]) && !$exact) { $array[$value] = '-'; } if($exact && isset($array[$value])) { $return = Array($value=>$array[$value]); } else { ksort($array); while ( !is_null($key = key($array)) ) { $val = current($array); if($key == $value) { prev($array); $prev = key($array); next($array); next($array); $next = key($array); break; } next($array); } if($prev && $next) { if(($long - $prev) > ($next - $long)) { $return = Array($prev=>$array[$prev]); } else { $return = Array($next=>$array[$next]); } } elseif ($prev || $next) { if($prev) { $return = Array($prev=>$array[$prev]); } elseif ($next) { $return = Array($next=>$array[$next]); } } } return $return;}?>Example usage (to lookup the closest color in an array)<?php$mycolors= Array( 5001046=>'Abbey', 1774596=>'Acadia', 8171681=>'Acapulco', 6970651=>'Acorn', 13238245=>'Aero Blue', 7423635=>'Affair', 8803850=>'Afghan Tan', 13943976=>'Akaroa', 16777215=>'Alabaster', 16116179=>'Albescent White', 10176259=>'Alert Tan', 30371=>'Allports');$color = 'C0C0C0';$colorlong = base_convert($color,16,10);$result = nearest($mycolors, $colorlong, true);if($result) { echo "An exact match was found for #" . $color . " which is called '" . $result[key($result)] . "'";} else { echo "No exact match was found";}if(!$result) { $result = nearest($mycolors, $colorlong, true); if($result) { echo "The closest match for #" . $color . " is #" . base_convert(key($result),10,16) . " which is called '" . $result[key($result)] . "'"; } else { echo "No match was found for #" . $color; } }?>