ik wil een graag van een getal de dichtsbijzijnde waarde krijgen.
Stel er staan in een tabel de getallen 8, 20, 40 en 100.
En ik zoek b.v. op 80, dan wil ik 100 terugkrijgen.
Zoek ik op 22, dan wil ik 20 terugkrijgen.
Ik las iets van SQL syntax NEAR.
Of kan dit met een PHP handigheidje geraliseerd worden ?
Wat je zou kunnen doen is met [php]array_map[/php] van iedere waarde het verschil met de gezochte waarde uitrekenen. Vervolgens zou je met een eigen implementatie van [php]min[/php] de key met de laagste waarde op kunnen zoeken, en de waarde die bij die key hoorde in de originele array kunnen pakken.
Vermoedelijk gebruik je mysql en daar kan ik niets met zekerheid over zeggen, maar in SQL Server heeft near met full text search te maken. Dat zou je er dus niet voor kunnen gebruiken.
hartelijk dank voor jouw reactie!
Ik heb nu de volgende code
<?
define("GETAL",$_GET['getal']);
$getallen = array(1,10,20,30,50,100);
printf('<br />We zoeken getal %d.<br />',GETAL);
echo 'De getallen waarin we willen zoeken zijn<br />';
echo '<pre>';
print_r($getallen);
echo '</pre>';
$verschillen = array_map("haalVerschil",$getallen);
echo '<br />Nadat we alle verschillen hebben berekent:';
echo '<pre>';
print_r($verschillen);
echo '</pre>';
sort($verschillen);
printf('<br />Dichtsbijzijnde waarde is %d',min($verschillen));
function haalVerschil($a) {
return GETAL - $a;
}
?>
Het moment dat sort() wordt gebruikt wil ik eigenlijk de waarde het dichtstbij 0 achterhalen. Dat is het getal wat ik nodig heb.
Heb jij of iemand anders nog suggesties?
Echt jammer dat PHP nog geen echte closures heeft... nu moest ik het oplossen met het ranzige create_function wil ik het allemaal binnen 1 functie houden.