Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wybranie najbliższej liczby
Forum PHP.pl > Forum > Przedszkole
sannin
Mam tablicę z takimi wartościami

Cytat
1.00
1.33
1.50
itd.


Do zmiennej trafia liczba 1.36, teraz jak najłatwiej sprawdzić do której wartości z tablicy jest najbliższa?
qwertyuiop1910
  1. <?php
  2. $i=1.36;
  3.  
  4. $tab=array(1.00,1.70,1.33,1.50);
  5. sort($tab);
  6. $avgminmax=($tab[0]+$tab[count($tab)-1])/2;
  7.  
  8. if($avgminmax>$i) echo "BLIZEJ DO MIN";
  9. elseif($avgminmax<$i) echo "BLIZEJ DO MAX";
  10. else echo "THE SAME";
  11. ?>


to tak na szybko ale pewnie sa prostsze sposoby;)
generalnie pobieramy srednia z MIN i z MAX, a reszta chyba oczywista
Inti
Witam,

W pierw zależy jak duża jest to tablica z wartościami. Jeśli jest ich niewiele to zrób to porównując pojedynczo każdy element - wyliczaj wartość bezwzględną danego elementu i porównuj aktualną z nowo obliczonymi, jeśli będzie mniejsza to podmieniasz jako bliższy element.

W przypadku większych tablic proponuję metodą rekurencyjną dzielić tablicę na połowę sprawdzając wartość ze środkowym jej elementem. Jeśli zmienna jest większa to idziesz w prawą stronę tablicy (w przeciwnym przypadku w lewą), aż dojdziesz do wyszukiwanego rezultatu.

Pozdrawiam,
Inti
Hectic
  1. $i = 1.36;
  2.  
  3. $array = array(1.00,1.70,1.33,1.50);
  4. sort($array);
  5.  
  6. foreach($array as $k => $v) {
  7. $r1 = abs($i - $v);
  8. $r2 = abs($i - $array[$k + 1]);
  9.  
  10. if($r1 <= $r2) {
  11. $ratio = $array[$k];
  12. break;
  13. }
  14. }


Zakładam, że chodzi o ratio.
sannin
Cytat(Hectic @ 15.08.2009, 16:02:06 ) *
Zakładam, że chodzi o ratio.


Tak, dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.